从列表中获取新结果

时间:2013-08-07 20:04:08

标签: c# linq list no-duplicates

我有一个详细的清单,我想要一个新的,具有一个属性的元素,没有像这样的重复。

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"

4 个答案:

答案 0 :(得分:3)

您需要DistinctSelect

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();