Linq 如何获取EF Framework以通过查询生成此组
我尝试了几种不同的方法,但我对生成的输出查询没有印象。它似乎效率很低。它需要高效,并且不应该将所有行带回应用层Linq 如何获取EF Framework以通过查询生成此组,linq,entity-framework,linq-to-entities,Linq,Entity Framework,Linq To Entities,我尝试了几种不同的方法,但我对生成的输出查询没有印象。它似乎效率很低。它需要高效,并且不应该将所有行带回应用层 选择年份(日期)作为年份, 月份(日期)为mth, 日期(日期)为dy, 将(*)计数为totalpics 从照片 其中photos.datetake p.datetake new{p.datetake.Year,p.datetake.Month,p.datetake.Day}) .选择(grp=>grp); var results=query.ToList(); 仅选择分组键(grp
选择年份(日期)作为年份,
月份(日期)为mth,
日期(日期)为dy,
将(*)计数为totalpics
从照片
其中photos.datetake p.datetake new{p.datetake.Year,p.datetake.Month,p.datetake.Day})
.选择(grp=>grp);
var results=query.ToList();
仅选择分组键(grp.key
):
仅选择分组键(
grp.key
):
您可以通过
grp.key
访问密钥属性,通过grp.count()
访问计数
var query=ctx.Photos.Where(p=>p.datetake new{p.datetake.Year,p.datetake.Month,p.datetake.Day})
.选择(grp=>new
{
grp.Key.Year,
grp.Key.Month,
grp.Key.Day,
Count=grp.Count()
});
var results=query.ToList();
您可以通过grp.key
访问密钥属性,并通过grp.count()访问计数
var query=ctx.Photos.Where(p=>p.datetake new{p.datetake.Year,p.datetake.Month,p.datetake.Day})
.选择(grp=>new
{
grp.Key.Year,
grp.Key.Month,
grp.Key.Day,
Count=grp.Count()
});
var results=query.ToList();
我会接受这个答案,尽管这不是我所期望的。虽然看起来效率不高,但它确实起到了作用。我在照片表上有一个日期索引。是否可以让它生成组,而不是distinct@palKhoa:当您使用聚合函数(如Count()
)时,可能不同的
将消失,并成为一个分组依据,请参见我上面的编辑。我将接受该答案,尽管它不是我所期望的。虽然看起来效率不高,但它确实起到了作用。我在照片表上有一个日期索引。是否可以让它生成组,而不是distinct@palKhoa:当您使用聚合函数(如Count()
)时,可能不同的
将消失并成为一个分组依据,请参见上面的我的编辑。什么是低效?什么是低效?
var query = ctx.Photos.Where(p => p.DateTaken <= maxCutOffDate)
.GroupBy(p => new { p.DateTaken.Year, p.DateTaken.Month, p.DateTaken.Day })
.Select(grp => grp);
var results = query.ToList();
var query = ctx.Photos.Where(p => p.DateTaken <= maxCutOffDate)
.GroupBy(p => new { p.DateTaken.Year, p.DateTaken.Month, p.DateTaken.Day })
.Select(grp => grp.Key);
var results = query.ToList();
var query = ctx.Photos.Where(p => p.DateTaken <= maxCutOffDate)
.GroupBy(p => new { p.DateTaken.Year, p.DateTaken.Month, p.DateTaken.Day })
.Select(grp => new
{
Date = grp.Key,
TotalPics = grp.Count()
});
var results = query.ToList();
var query = ctx.Photos.Where(p => p.DateTaken <= maxCutOffDate)
.GroupBy(p => new { p.DateTaken.Year, p.DateTaken.Month, p.DateTaken.Day })
.Select(grp => new
{
grp.Key.Year,
grp.Key.Month,
grp.Key.Day,
Count = grp.Count()
});
var results = query.ToList();