1

我有一个详细的列表,我想要一个新的列表,其中包含一个属性的元素,并且没有像这样的重复项。

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

4 回答 4

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());
于 2013-08-07T20:05:13.817 回答
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();
于 2013-08-07T20:06:45.717 回答
2

您要使用Select()来选择项目的特定属性:

list.Select(c => c.Company);

这将返回一个IEnumerable<string>.

然后你会想打电话.Distinct()

于 2013-08-07T20:06:20.837 回答
0
newList = list.Select(x => x.Store).Distinct().ToList();
于 2013-08-07T20:07:30.627 回答