【发布时间】:2021-08-29 00:21:45
【问题描述】:
我有一个包含重复记录的数据库,但只有它们的 ID 字段相同,其余信息不同,例如:
Id: test, version: 1.0.0
Id: test, version: 2.1.3
Id: something, version: 4.0.0
Id: something, version: 5.0.0
...
我可以使用以下代码获得所有项目而不会重复
using var db = new dbContext();
var query =
from item in db.my.Select(x => new { x.Id }).Distinct()
.SelectMany(key => db.myTable.Where(x => x.Id == key.Id).Take(1))
select new myModel
{
Id = item.Id,
Versions = <Here we need all related versions>
};
return await query.ToListAsync();
现在我想获取所有版本的 ID 并将其放入 Versions 中的 select new myModel{}
但我不知道该怎么做
更新: 我添加了这一行来查询
from versions in db.myTable.AsEnumerable().GroupBy(x => x.Id)
和
select new myModel
{
Id = item.Id,
Versions = versions.Select(x => x.Version).ToList()
};
但我遇到了错误
System.InvalidOperationException: 'Processing of the LINQ expression 'GroupByShaperExpression:
【问题讨论】:
-
什么是
Versions?如果它是my实体类实例的列表,则切换回在内存中执行GroupBy的原始解决方案(AsEnumerable().GroupBy(...))。上一个问题的解决方案是针对每个唯一Id返回 single 项。最好提前确切知道您需要什么结果,因为不幸的是方法不同。 -
Versions 是 List
,正如你在上一篇文章中回答的那样,现在另外,我想获取每个 id 的版本 -
我的意思是,我需要两个,一个不重复的列表,每个项目都有自己的版本
-
按照其他答案中的建议在内存中执行此操作。反正这么简单的任务问题太多了。
-
@SvyatoslavDanyliv 我更新了我的问题,我使用了记忆法,但出现了错误。你的方法和记忆方法好像没有结合起来
标签: c# linq entity-framework-core