在LInq查询结果中查找列的最小值和最大值
我有这样一个Linq查询:在LInq查询结果中查找列的最小值和最大值,linq,Linq,我有这样一个Linq查询: var result = from c in displayedEmployees select new[] { c.Name, c.Code, c.Rank.ToString(), c.Id.ToString(),c.Rank. }; var min = result.Min(x => x.Rank); var max = result.Max(x => x.Rank); 如果我想选择任何列的最小值和最大值,例如,与此类似的秩: var result
var result = from c in displayedEmployees select new[] { c.Name, c.Code, c.Rank.ToString(), c.Id.ToString(),c.Rank. };
var min = result.Min(x => x.Rank);
var max = result.Max(x => x.Rank);
如果我想选择任何列的最小值和最大值,例如,与此类似的秩:
var result = from c in displayedEmployees select new[] { c.Name, c.Code, c.Rank.ToString(), c.Id.ToString(),min(c.Rank) ,max(c.Rank)};
我如何才能做到这一点?Select实际上会对每个项目(displayedEmployee)执行转换,因此最终的项目数与您开始时的项目数相同。最小值和最大值是减少值,它们将列表减少为标量 “select”关键字后面是一个只接收当前项的函数(在您的例子中是c)。所以没有办法得到最大值,也不希望结果中的每一项都重复相同的最大值 你应该分别计算最小值和最大值 之后:
var result = from c in displayedEmployees select { c.Name, c.Code, c.Rank };
你可以这样做:
var result = from c in displayedEmployees select new[] { c.Name, c.Code, c.Rank.ToString(), c.Id.ToString(),c.Rank. };
var min = result.Min(x => x.Rank);
var max = result.Max(x => x.Rank);
请参阅此处的更多示例(LINQ 101):如果选择数组
选择新[]
则在选择后,您无权按名称访问字段,因此当您尝试`result.Min(x=>x.Rank);`确实,问题的第一行是不正确的。我会改变我的答案。