我有一个详细的清单,我想要一个新的,具有一个属性的元素,没有像这样的重复。
List<Class1> list = List<Class1>();
list.Add(new Class1("1", "Walmart", 13.54));
list.Add(new Class1("2", "Target", 12.54));
list.Add(new Class1("3", "Walmart", 14.54));
list.Add(new Class1("4", "BestBuy", 16.54));
list.Add(new Class1("5", "Walmart", 19.54));
list.Add(new Class1("6", "Amazon", 12.33));
我的新列表
List<Stores> newList = list.Select / FindAll / Group ?
我想要这个集合
newList = "Walmart", "Target", "BestBuy", "Amazon"
答案 0 :(得分:3)
您需要Distinct
和Select
。
var newList = list.Select(x => x.Name).Distinct().ToList();
如果你也想要你原来的课程,你必须更加喜欢。
获取MoreLINQ并使用其DistinctBy
方法:
var newList = list.DistinctBy(x => x.Name).ToList();
或使用聪明的GroupBy
黑客:
var newList = list.GroupBy(x => x.Name).Select(x => x.First());
答案 1 :(得分:3)
让我们假设Class1定义为:
public class Class1
{
string Id {get;set;}
string Store {get;set;}
double Price {get;set;}
}
您可以将结果显示为:
var result = list.Select(x => x.Store).Distinct().ToList();
答案 2 :(得分:2)
您想使用Select()
选择项目的特定属性:
list.Select(c => c.Company);
这会返回IEnumerable<string>
。
然后,您需要致电.Distinct()
。
答案 3 :(得分:0)
newList = list.Select(x => x.Store).Distinct().ToList();