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; } } }