我想获取列表中 where 子句的结果,然后获取该结果集并仅创建一个新类型,该类型的所有字段均由原始查询的聚合构成。所以给出下面的基本示例,是否有将 2 个 linq 语句合并为一个?如果原来的 where 没有行,那么它应该返回 null。谢谢!
class Foo
{
public int A { get; set; }
public int B { get; set; }
}
List<Foo> lst = GetFooList();
var q = (from f in lst
where f.A > 3
select f).ToList();
if (q.Count != 0)
{
var qq = new
{
MinA = q.Min(l => l.A),
MaxB = q.Max(h => h.B),
};
// now do something with qq
}
更新:对于我的情况,原始集有很多项目,但在 where 子句之后,结果集非常小。多次枚举第二组应该不是问题。此外,我需要在集合中使用 first 和 last 来从这些记录中获取值。按答案分组最适合我。聚合方式非常有趣,我认为它还有另一个用途。