我试图在我的ConsultantList中返回不同的值,但它仍返回重复项。
ConsultantList = p.ProjectExtensions
.SelectMany(pext => pext.Consultants)
.Distinct()
.Select(c =>
new ConsultantItemDTO
{
EmployeeId = c.ConsultantId,
EmployeeName = c.Employee.Firstname + " " + c.Employee.Lastname
}),
这是整个方法:
答案 0 :(得分:0)
如果要从某些自定义数据类型的对象序列中返回不同的元素,则必须在该类中实现IEquatable通用接口。
或者您可以扩展IEnumerable:
public static IEnumerable<TSource> DistinctBy<TSource, TKey>
(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
使用示例:
.Select(p => p.Employee)
.DistinctBy(p => p.EmployeeId)