Linq不同的方法仅针对特定属性

在此代码段中,如何在选择所有其他值[ e.Firstname, e.Surname, e.EntityNumber ]使用不同的function。

 response .Categories .SelectMany(c => c.Events) .Select(e => new { e.Firstname, e.Surname, e.EntityNumber }) .Distinct() .ToList() 

您可以使用GroupBy

 response .Categories .SelectMany(c => c.Events) .Select(e => new { e.Firstname, e.Surname, e.EntityNumber }) .GroupBy(x => x.EntityNumber) .Select(grp => grp.First()) .ToList() 

我选择了每组的任意一行(第一组)。 您可以根据您的逻辑更改grp.First()

 //... .GroupBy(x => x.EntityNumber) .Select(grp => grp.OrderBy(x => /* Insert logic here */).First()) //... 

您可以实现扩展方法DistinctBy

 public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector, IEqualityComparer comparer = null) { if (source == null) throw new ArgumentNullException("source"); if (keySelector == null) throw new ArgumentNullException("keySelector"); var keys = new HashSet(comparer); foreach (var element in source) { if (keys.Add(keySelector(element))) { yield return element; } } }