![](/img/trans.png)
[英]How to find the maximum value for each key in a List of Dictionaries using LINQ?
[英]How can I find the maximum value in a List using LINQ?
我有这个清单:
public static List<PhraseModel> phraseList;
PhraseModel class 如下所示:
public class PhraseModel
{
public string PhraseId { get; set; }
public string English { get; set; }
public string PhraseNum { get; set; }
}
如何使用 LINQ 找到 PhraseNum 的最大值
向发表评论的人道歉。 PhraseNum 始终是 int 数字,但在字符串字段中。 由于从 Excel 读取的方式,它被设置为字符串
Linq 有一个 Max 扩展方法。 试试看:
phraseList.Max(x=>int.Parse(x.PhraseNum));
您可以使用.Max()
。 在这里你不需要Select()
int result = phraseList.Max(x => int.Parse(x.PhraseNum));
Console.WriteLine(result); //max PhraseNum from list
为避免异常,您可以使用@haldo 提到的int.TryParse()
喜欢,
//This is C# 7 Out variable feature.
int result = phraseList.Max(p => int.TryParse(p.PhraseNum, out int phraseNumInt) ? phraseNumInt: int.MinValue);
如果PhraseNum
有可能不是 int,您可以使用TryParse
而不是Parse
来避免异常。
int tmp;
var max = phraseList.Max(p => int.TryParse(p.PhraseNum, out tmp) ? tmp : int.MinValue);
如果您使用 C# 7.0 或更高版本,您可以在TryParse
中使用以下语法和内联变量声明:
var max = phraseList.Max(p => int.TryParse(p.PhraseNum, out int tmp) ? tmp : int.MinValue);
或者没有TryParse
:
var max = phraseList.Max(p => int.Parse(p.PhraseNum));
此代码返回 8
PhraseModel phraseModel = new PhraseModel() { PhraseNum = "5" };
phraseList.Add(phraseModel);
PhraseModel phraseModel2 = new PhraseModel() { PhraseNum = "3" };
phraseList.Add(phraseModel2);
PhraseModel phraseModel3 = new PhraseModel() { PhraseNum = "4" };
phraseList.Add(phraseModel3);
PhraseModel phraseModel4 = new PhraseModel() { PhraseNum = "8" };
phraseList.Add(phraseModel4);
int number;
var maxPhraseNumber = phraseList.Select(n => int.TryParse(n.PhraseNum, out number) ? number : 0).Max();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.