实体框架选择group by

时间:2018-05-23 06:55:53

标签: vb.net entity-framework linq sqlite

我有一个包含字段(id,路径,详细信息)的图像的简单表 我有一些图像,他们有相同的路径(不同的ID和细节)。 我知道数据库应该规范化,但这不在我身上。 我希望获得所有图像,但每条路径只能拍摄一次。 我的sql查询有效

select * from images Group by path order by id

检查example

我在将这个问题转换为VB.NET中的实体框架查询(linq)时遇到了问题 我设法做的唯一事情就是只获得路径,但我想要整个图像(我不关心id,但我想要详细信息)

1 个答案:

答案 0 :(得分:0)

如果您想与Entity Framework 6或Core分组,实际上并不重要,您只需使用:

var result = EFContext.Images.GroupBy(i=> i.Path)

EFContext很清楚。图像是您要分组的DBSet。

如果您想要实际执行查询并获得所有结果,我建议您使用:

var result = await EFcontext.Images.AsNoTracking().GroupBy(i=>i.Path).ToListAsync()

这当然要求您的方法标记为异步。否则你可以跳过await并使用ToList()。在ToList()之前,returnvalue将是一个IQueryable,可用于添加其他条件,如Where或Select。 一旦使用toList,将对数据库执行查询。

AsNoTracking标记EF,你不想跟踪结果,它会(稍微)更快。这意味着您对结果的更改将不会被ef跟踪,并且当您想要保存它时,您必须先将其附加。如果您不打算使用跟踪功能并将其更新回数据库,我建议您始终使用它。

相关问题