c# - 使用 LINQ 删除任何重复的值

标签 c# linq

我在 SO 上看到过这个问题,但它没有回答我的问题,因为我想删除同样重复的值的所有实例。

例如,如果我有一个包含这些值的列表:A、A、C、D、B、A、E、E

我想在新列表具有这些值的地方编写一些逻辑:C、D、B。

因为 A 和 E 被归类为重复项,所以我想完全删除它们。

考虑到这一点,这是我的代码:

// List having duplicate string elements.
List<string> list = new List<string>();
list.Add("A");
list.Add("A");
list.Add("C");
list.Add("D");
list.Add("B");
list.Add("A");
list.Add("E");
list.Add("E");

// Get distinct elements.
var distinct = (from item in list orderby item select item).Distinct();

foreach (string value in distinct)
{
    Console.WriteLine("Distinct : {0}", value);
}

这是输出:

A, B, C, D, E

最佳答案

应该这样做(C 也应该在列表中,它只在代码示例中出现一次)

var distinct = list.GroupBy(x=>x).Where(y=>y.Count()==1).Select(z=>z.Key);

关于c# - 使用 LINQ 删除任何重复的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20906701/

相关文章:

c# - 限制访问,直到用户确认电子邮件链接

c# - 使用 select 将 foreach 转换为 linq 表达式

c# - 按字段和值搜索过滤器

C# 比较两个相同对象类型的列表

c# - 获取没有文本框的文本输入

c# - 允许一个方法只接受数字?

C# Mono {new Bitmap ("fileName");} 卡在 OSX 上

c# - 使用 Linq to SQL 的动态不同值

c# - LINQ 查询需要在同一查询中升序或降序

c# - Web API 2 Http 发布方法