c# - 从列表中获取新结果

标签 c# linq list no-duplicates

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

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"

最佳答案

您需要 DistinctSelect

var newList = list.Select(x => x.Name).Distinct().ToList();

如果您还想要原来的类(class),则必须更花哨一些。

要么得到MoreLINQ并使用其 DistinctBy 方法:

var newList = list.DistinctBy(x => x.Name).ToList();

或者使用聪明的 GroupBy hack:

var newList = list.GroupBy(x => x.Name).Select(x => x.First());

关于c# - 从列表中获取新结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112778/

相关文章:

c# - 使用 EnumerateFiles 和多个过滤器(文件扩展名)读取文件

c# - 如何使用 LINQ 在 XML 中按名称获取元素

python插入函数列表理解

Python:从列表中元组内的字典中获取字典值并用它做一些事情

c# - 如何将接口(interface)作为参数传递给方法?

c# - 为什么从 EventArgs 继承有用?

c# - 列表 A 值与列表 B 中所有可能值的比较

python - 字符串格式化和解析

c# - 如何从 TextBox 中的用户获取所需的键并在 Keyboard.isKeyDown(Key ."... ") 中使用它

c# - 使用 LINQ To Object 构建要选择的属性