如何独立获取每个属性的不同值

时间:2018-11-20 14:28:53

标签: c# performance linq distinct-values

我有个大型收藏集,我想独立获取每个属性的不同值

IEnumerable<MyClass> collection = ...;

var prop1Values = collection.Select(i => i.Prop1).Distinct();
var prop2Values = collection.Select(i => i.Prop2).Distinct();
var prop3Values = collection.Select(i => i.Prop3).Distinct();

如何在不枚举多次的情况下获取它?寻找最直观的解决方案:)

1 个答案:

答案 0 :(得分:3)

您可以在foreach s的帮助下,在单个HashSet<T>中尝试这样做:

//TODO: put the right types for TypeOfProp1, TypeOfProp2, TypeOfProp3
var prop1Values = new HashSet<TypeOfProp1>(); 
var prop2Values = new HashSet<TypeOfProp2>();
var prop3Values = new HashSet<TypeOfProp3>();

foreach (var item in collection) {
  prop1Values.Add(item.Prop1);
  prop2Values.Add(item.Prop2);
  prop3Values.Add(item.Prop3);
}