Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在LInq查询结果中查找列的最小值和最大值_Linq - Fatal编程技术网

在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

我有这样一个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 = 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);`确实,问题的第一行是不正确的。我会改变我的答案。