如何使用 LINQ 最好通过 GroupBy()
获取唯一项的列表?
这将是我的尝试:
public IEnumerable<Owner> GetAll(int userId)
{
return _dbContext.Owners.Where(x => x.UserId == userId)
.GroupBy(p => p.Text).Select(x => new Owner()).ToList();
}
但这给我带来了这个运行时错误:
The entity or complex type 'CentraVent.Data.Owner' cannot be constructed in a LINQ to Entities query.
我不得不说这是我的众多尝试之一。我只能找到返回匿名类型的示例。对于强类型对象如何做到这一点?
编辑具有唯一的所有者列表,我的意思是基于Text
列。因此,Text
列中的记录不应具有相同的值。我得到哪个重复项并不重要。
所有者表具有以下字段:
- 身份证
- 文字
- 颜色
- 用户 ID
最佳答案
如果您希望每个唯一的 Text
值的哪个 Owner
并不重要,那么您可以只获取第一个
public IEnumerable<Owner> GetAll(int userId)
{
return _dbContext.Owners.Where(x => x.UserId == userId)
.GroupBy(p => p.Text).Select(x => x.FirstOrDefault()).ToList();
}
关于c# - 使用 LINQ GroupBy() 从数据库获取唯一项目的强类型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28995605/