Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Vb.net 实体框架选择与分组依据_Vb.net_Entity Framework_Linq_Sqlite - Fatal编程技术网

Vb.net 实体框架选择与分组依据

Vb.net 实体框架选择与分组依据,vb.net,entity-framework,linq,sqlite,Vb.net,Entity Framework,Linq,Sqlite,我有一个包含字段(id、路径、详细信息)的简单图像表 我有一些图片,他们有相同的路径(不同的id和细节)。 我知道数据库应该规范化,但这不是我的责任。 我想得到所有的图像,但每个路径只有一次。 我的sql查询是 从图像中选择* 按路径分组 按id订购 检查 在VB.NET中将其转换为实体框架查询(linq)时遇到问题。 我唯一能做的就是只获取路径,但我想要整个图像(我不在乎id,但我想知道细节)如果您想使用Entity Framework 6或Core进行分组,实际上并不重要,您只需要使用: v

我有一个包含字段(id、路径、详细信息)的简单图像表 我有一些图片,他们有相同的路径(不同的id和细节)。 我知道数据库应该规范化,但这不是我的责任。 我想得到所有的图像,但每个路径只有一次。 我的sql查询是

从图像中选择*
按路径分组
按id订购

检查

在VB.NET中将其转换为实体框架查询(linq)时遇到问题。

我唯一能做的就是只获取路径,但我想要整个图像(我不在乎id,但我想知道细节)

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

var result = EFContext.Images.GroupBy(i=> i.Path)
背景很清楚。Images是要分组的数据库集

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

var result = await EFcontext.Images.AsNoTracking().GroupBy(i=>i.Path).ToListAsync()
当然,这需要将方法标记为异步。否则,您可以跳过等待并使用ToList()。在ToList()之前,returnvalue是一个IQueryable,可用于添加其他条件,如Where或Select。 使用toList后,将对数据库执行查询


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

您使用的是什么版本的entity framework?通常,您只需使用EFContext.Images.GroupBy(i=>i.Path)即可。但是在EF Core中,groupby不会被转换为sql,因此分组会发生在您的应用程序中。正如@Mono所说,您可以通过
groupby
使用linq运行它,也可以使用
db.ExecuteQuery(Of T)(stringQuery)
too@Mono环境足迹6。您的查询几乎有效。不知怎的,我不得不接受FirstOrDefault@HasanGholamali我不知道这件事。这看起来很有趣。您可以在此处查看更多信息