Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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
C# 多对一linq投影_C#_Linq - Fatal编程技术网

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()
           };