叮当猫咪
你是想在一个以上的领域中脱颖而出吗?如果是这样的话,只需使用匿名类型和不同的操作符就可以了:var query = doc.Elements("whatever")
.Select(element => new {
id = (int) element.Attribute("id"),
category = (int) element.Attribute("cat") })
.Distinct();如果您试图获得“较大”类型的一组不同的值,但只查看一些属性的子集,用于区分性方面,则您可能需要DistinctBy如在MoreLINQ在……里面DistinctBy.cs: public static IEnumerable<TSource> DistinctBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector,
IEqualityComparer<TKey> comparer)
{
HashSet<TKey> knownKeys = new HashSet<TKey>(comparer);
foreach (TSource element in source)
{
if (knownKeys.Add(keySelector(element)))
{
yield return element;
}
}
}(如果你通过null作为比较器,它将使用键类型的默认比较器。)