【发布时间】:2021-04-30 00:49:55
【问题描述】:
我有模特:
public class Student
{
public string Name{ get; set; }
public DateTime BirthDate{ get; set; }
public string UniversityName{ get; set; }
public decimal Balance{ get; set; }
}
我有三个bool 变量:
- IsName
- IsBirthDate
- IsUniversityName
基于它们,我需要创建GroupBy。如果IsBirthDate=true 那么
DbContext.Students.GroupBy(x => new { x.BirthDate }).Select(s => new
{
s.Key.BirthDate,
Balance = s.Sum(x => x.Balance).ToString(),
});
如果IsBirthdate=true, IsUniversityName=true 那么
DbContext.Students.GroupBy(x => new { x.BirthDate, x.UniversityName }).Select(s => new
{
s.Key.BirthDate,
s.Key.UniversityName,
Balance = s.Sum(x => x.Balance).ToString(),
});
以及其他带有布尔参数的选项。
如何使用.GroupBy and .Select动态生成查询?
【问题讨论】:
-
您可以将它们存储在变量中,然后在
if语句中再次过滤它们。 -
你不能轻易做到,因为两个
GroupBy使用不同的键对象,Select产生不同的对象。两个结果不能放在同一个“类型”的变量中,两个中间结果(GroupBy)也不能 -
确实,除了实体和聚合字段之外,这两个查询之间几乎没有共同点。如果不通过强制转换为
IEnumerable删除所有类型信息,您甚至无法从同一函数返回结果
标签: c# .net linq group-by linq-to-sql