C# 多对一linq投影
如何在一个查询中写入此内容C# 多对一linq投影,c#,linq,C#,Linq,如何在一个查询中写入此内容 var query = this.ObjectContext.SomeCollection. .Where(...) .Select(f => new {somenumber = f.somenumber}); MyType type = new MyType() { Sum = query.Sum(f => f.so
var query = this.ObjectContext.SomeCollection.
.Where(...)
.Select(f => new {somenumber = f.somenumber});
MyType type = new MyType()
{
Sum = query.Sum(f => f.somenumber)
}
甚至
MyType type = new MyType {
Sum =
this.ObjectContext.SomeCollection
.Where(...)
.Sum(f => f.somenumber) };
应该这样做,因为投影中只有一个属性,所以完全不需要使用匿名类型。您只需获取查询并将其包含在
MyType
的对象初始值设定项中即可。请注意,只要您不在其他地方重用投影(在这种情况下,您将把它拉到外面,然后重用它),就可以了
此外,您可以将
.Select(f=>f.somenumber).Sum()减少到Sum(f=>f.somenumber)
次要项:删除额外项。在这两个例子中,都是在一些集合之后。否则,答案很好。
MyType type = new MyType {
Sum =
this.ObjectContext.SomeCollection
.Where(...)
.Sum(f => f.somenumber) };
var type = new MyType {
Sum = this.ObjectContext
.SomeCollection
.Where(SomeCondition)
.Select(f => f.somenumber)
.Sum()
};