gpt4 book ai didi

c# - 在 IQueryable 上应用多个组函数

转载 作者:行者123 更新时间:2023-11-30 12:45:53 25 4
gpt4 key购买 nike

给定以下简单对象

public class Foo {
public int PrimaryKey;
public int ForeignKey;
public bool FlagOne;
public bool FlagTwo;
}

假设我收到了一个 IQueryable<Foo> .一般来说,如果我想对每个标志进行计数操作,我会这样做:

IQueryable<Foo> foos = GetFoos();
var total = foos.Count();
var flagOneTotal = foos.Count(p => p.FlagOne);
var flagTwoTotal = foos.Count(p => p.FlagTwo);

在 EF 中,上面的代码将在数据库中执行 3 个查询。我想在一个查询中检索所有这些。

对于分组,我可以这样做来执行单个查询:

var q = from foo in foos
group foo by foo.ForeignKey into g
select new {
ForeignKey = g.Key,
Total = g.Count(),
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();

干杯

关于c# - 在 IQueryable<T> 上应用多个组函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22479127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com