在两个列表项不匹配100%(仅部分匹配)的列表中获取唯一元素

时间:2018-10-29 00:47:10

标签: c#

我的想法是使用一个新列表(List1)并将其与另一个列表(List2)进行比较,并创建一个新列表(List3),该列表排除两个列表中的所有公共元素以及非公共元素的结果。 (对我而言)困难的是List1和List2元素不是真正的匹配。 List1元素可能是List2元素的一部分,但不是真正的匹配项。使用exclude似乎不允许使用IndexOf比较两个列表元素。 有谁知道如何实现这一目标? 提前致谢。

3 个答案:

答案 0 :(得分:2)

假设您具有List1和List2。下面是比较两个列表中元素的最简单方法。

IList<string> List3 = new List<string>();
foreach (var item1 in List1)
{
   foreach(var item2 in List3)
   { 
     if (item1 == item2)
     {
        List3.Add(item1);
     }
   }
}

答案 1 :(得分:0)

  

我的想法是使用一个新列表(List1)并将其与另一个列表进行比较   (List2)并创建一个排除所有常见元素的新列表(List3)   在两个列表中,并在非常见元素上显示结果。

     

来自评论

     

我需要比较两个列表中的每个元素List1元素存在于   List2元素(两个字符串)。

从两个列表中查找唯一性的最简单方法之一

var List1 = new List<string>() { "a", "b", "c", "d" };
var List2 = new List<string>() { "a", "e", "f", "g", "c","z" };
var List3 = new List<string>();

List3.AddRange(List1.Except(List2));
List3.AddRange(List2.Except(List1));

List3.ForEach(l=>Console.WriteLine(l));

答案 2 :(得分:0)

如何?

List commonElements = new List<string>();

foreach (var smallString in SmallList)
{
   if (large.Any(x => x.Contains(smallString)))
   {
       // Add to common elements
       commonElements.Add(smallString);
   }
}