Если вы хотите добавить возможность сделать это как метод расширения, вот метод с именем DistinctBy
, который принимает в качестве параметров source и keySelector и возвращает отдельный набор элементов. Он делает то же самое, что и второй запрос Ахмада, но выглядит немного красивее.
C # :
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector)
{
return source.GroupBy(keySelector).Select(i => i.First());
}
VB :
<Extension()>
Public Function DistinctBy(Of TSource, TKey)(
ByVal source As IEnumerable(Of TSource),
ByVal keySelector As Func(Of TSource, TKey))
As IEnumerable(Of TSource)
Return source.GroupBy(keySelector).Select(Function(i) i.First())
End Function
Тогда звоните так:
var s = (from p in operatorList.DistinctBy(x => x.ID)
select p.ID, p.Name, p.Phone)