删除重复出现的重复项

问题描述 投票:1回答:2

只需在linq上练习一下,然后我将执行通常的删除项,这些删除项仅重复一次以上,因此在下面的示例中,我有。

[Word1 Word2 Word1

它只应打印出单词2这是https://dotnetfiddle.net/P47DGT是他们使用lambada更好地实现此目的的简便方法。

class Words {
    public string MyWords { get; set; }
}

public class Program    
{
    public static void Main()
{
  List<Words> _words = new List<Words>();
  _words.Add(new Words() { MyWords = "word1" });
  _words.Add(new Words() { MyWords = "word2" });
  _words.Add(new Words() { MyWords = "word1" });

   RemoveDuplicatesLinq(_words);
}   
    static void RemoveDuplicatesLinq(List<Words> _words) {
        List<Words> duplicatesRemoved = new List<Words>();
        duplicatesRemoved = _words.GroupBy(x => x)
                    .Where(group => group.Count() > 1)
                    .Select(group => group.Key).ToList();  
        foreach (var item in duplicatesRemoved) {
            Console.Write("Words Left " + item.MyWords + "\r\n");
        }
    }       
}

它应该仅将我打印出一次出现的Word2,但不是打印出来的>]

只需在linq上练习一下,我会执行通常删除的项目,这些项目仅重复一次以上,因此在下面的示例中。 Word1 Word2 Word1仅应打印出单词2这是一个...

c# linq
2个回答
4
投票

您只应按MyWords分组,并且只过滤长度为1的组。然后可以用IEnumerable<Words>将这些组展平为System.Linq.Enumerable.SelectMany。由于您似乎想要一个列表,因此我们可以添加System.Linq.Enumerable.SelectMany将结果转换为ToList()


1
投票

这里可能的选项可以将Words Left word2 属性包装为匿名类型(它们通过属性值进行比较,而不是通过引用相等进行比较,然后选择计数等于1的组)>

MyWords
© www.soinside.com 2019 - 2024. All rights reserved.