只需在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这是一个...
您只应按MyWords
分组,并且只过滤长度为1的组。然后可以用IEnumerable<Words>
将这些组展平为System.Linq.Enumerable.SelectMany
。由于您似乎想要一个列表,因此我们可以添加System.Linq.Enumerable.SelectMany
将结果转换为ToList()
。
这里可能的选项可以将Words Left word2
属性包装为匿名类型(它们通过属性值进行比较,而不是通过引用相等进行比较,然后选择计数等于1的组)>
MyWords