Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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# 在IQueryable上应用多组函数<;T>;_C#_Entity Framework_Linq_Iqueryable - Fatal编程技术网

C# 在IQueryable上应用多组函数<;T>;

C# 在IQueryable上应用多组函数<;T>;,c#,entity-framework,linq,iqueryable,C#,Entity Framework,Linq,Iqueryable,给定以下简单对象 公共类Foo{ 公钥; 公钥外键; 公共布尔FlagOne; 公共图书馆2号; } 假设我收到了一个IQueryable。通常,如果我想对每个标志进行计数操作,我会这样做: IQueryable foos=GetFoos(); var total=foos.Count(); var flagOneTotal=foos.Count(p=>p.FlagOne); var flagtowotal=foos.Count(p=>p.flagtowo); 在EF中,上面将在数据库中执行

给定以下简单对象

公共类Foo{
公钥;
公钥外键;
公共布尔FlagOne;
公共图书馆2号;
}
假设我收到了一个
IQueryable
。通常,如果我想对每个标志进行计数操作,我会这样做:

IQueryable foos=GetFoos();
var total=foos.Count();
var flagOneTotal=foos.Count(p=>p.FlagOne);
var flagtowotal=foos.Count(p=>p.flagtowo);
在EF中,上面将在数据库中执行3个查询。我想在一个查询中检索所有这些

对于分组,我可以执行以下操作以执行单个查询:

var q=来自foos中的foo
按foo.ForeignKey将foo分组为g
选择新的{
外键=g键,
总计=g.计数(),
FlagOneTotal=g.Count(p=>p.FlagOne),
FlagTwoTotal=g.Count(p=>p.FlagTwo)
};
var list=q.ToList();
但是,如果我想在一个查询和一个匿名对象中获得所有元素的总数,而不考虑外键,我该怎么做呢


换句话说,我如何告诉.net需要将
foos
中的所有元素视为一个组,以便我可以对它们进行计数操作。

这应该可以完成以下工作:

var q = from foo in foos
        group foo by 1 into g
        select new {
           Total = g.Count(),
           FlagOneTotal = g.Count(p => p.FlagOne),
           FlagTwoTotal = g.Count(p => p.FlagTwo)
        };

var list = q.ToList();

干杯

你的最终目标是避免3次点击数据库吗?@LucMorin这只是一个示例,但这不是重点。我想知道是否有办法做到这一点。
g.Key
将保留值1而不是
ForeignKey
@AlaaMasoud我刚刚从查询中删除了它,正如他所说的“不管外键”,我认为它不需要它。