从linq to实体中的列表中选择不同的值
有一个表,它是实体框架生成的poco实体从linq to实体中的列表中选择不同的值,linq,c#-4.0,entity-framework-4,Linq,C# 4.0,Entity Framework 4,有一个表,它是实体框架生成的poco实体 class Log { int DoneByEmpId; string DoneByEmpName } 我正在从数据库中检索列表。我需要基于donebyempid的不同值,并按这些值的名称排序 我尝试了很多方法,但都不管用 var lstLogUsers = (context.Logs.GroupBy(logList => logList.DoneByEmpId).Select(item => item.First())).
class Log
{
int DoneByEmpId;
string DoneByEmpName
}
我正在从数据库中检索列表。我需要基于donebyempid的不同值,并按这些值的名称排序
我尝试了很多方法,但都不管用
var lstLogUsers = (context.Logs.GroupBy(logList => logList.DoneByEmpId).Select(item => item.First())).ToList(); // it gives error
这一个得到了所有的用户
var lstLogUsers = context.Logs.ToList().OrderBy(logList => logList.DoneByEmpName).Distinct();
任何人都可以建议如何实现这一点。我可以指出您的数据模型可能存在问题吗?我想你应该在这里有
DoneByEmpId
,还有一个单独的表Employee
,它有EmpId
和Name
我想这就是为什么您需要使用
Distinct
/GroupBy
(正如您所发现的,这在这种情况下并不起作用)。我离编译器不近,所以我无法测试它,但是
使用另一个版本的Distinct()
,该版本采用IEqualityComparer
参数,然后使用OrderBy()
例如,请参阅。我实际上没有查看日志中的字段。克里斯·巴拉德可能是对的。它看起来确实很奇怪。它还有很多其他字段,empid和其他详细信息来自其他数据库……还有其他字段我在这里没有提到,因此数据模型是正确的,您能建议一种使用linqare实现这一点的方法吗?您确定吗?每个
DoneByEmpId
是否可以有不同的DoneByEmpName
值?