比较两个字符串列表,如果其中一项匹配,则进行一些处理
comparing two lists of string and if one of the item match do some processing
我有两个字符串列表。我想将一个列表中的每个元素与另一个列表中的每个元素进行比较,如果至少有一个匹配,则进行一些处理,否则什么都不做。
我不知道该怎么做。我确实有以下列表,我使用的代码是 SequenceEqual,但我的领导说这是错误的,因为它只是比较它是否相等,什么都不做。我不能不同意,我想实现我上面提到的预期功能。请帮忙。如您所见,顺序无关紧要,这里 123 在两个列表中但顺序不同,因此它匹配并因此根据我的要求进行一些处理。
List<string> list1 = new List<string> () { "123", "234" };
List<string> list2 = new List<string> () { "333", "234" , "123"};
您可以为此使用 Any
方法:
var matchfound = list1.Any(x=> list2.Contains(x));
现在您可以在 matchFound
上执行条件块,如果它 returns true
您可以处理任何需要的东西。
如果您想进行不区分大小写的比较,那么您将需要使用 String.Equals
并且可以指定大小写是否对比较那些无关紧要。
使用 LINQ 查找匹配项;然后检查生成的数组大小如下:
var intersect = list1.Where(el1=>list2.Any(el2=>el2==el1));
var isMatch = intersect.Count > 0;
您可以检查相交和任意
var matchFound = list1.Intersect(list2).Any();
例如,
List<string> list1 = new List<string>{ "123", "234" };
List<string> list2 = new List<string>{ "333", "234" , "123"};
var result = list1.Intersect(list2).Any();
输出True
List<string> list3 = new List<string>{"5656","8989"};
result = list1.Intersect(list3).Any();
输出False
您可以使用Intersect
查找共同元素:
var intersecting = list1.Intersect(list2);
如果你只是想知道有没有共同元素追加.Any()
:
bool atLeastOneCommonElement = intersecting.Any();
如果你想处理它们:
foreach(var commonElement in intersecting)
{
// do something ...
}
您需要从两个列表中取出所有匹配项,然后在找到匹配项时进行编码,例如
foreach (var item in list1.Where(x => list2.Contains(x)))
{
//do some processing here
Console.WriteLine($"Match found: {item}");
}
在上面的代码中,当 item
出现在两个列表中时,foreach
进行迭代。
输出:
我有两个字符串列表。我想将一个列表中的每个元素与另一个列表中的每个元素进行比较,如果至少有一个匹配,则进行一些处理,否则什么都不做。
我不知道该怎么做。我确实有以下列表,我使用的代码是 SequenceEqual,但我的领导说这是错误的,因为它只是比较它是否相等,什么都不做。我不能不同意,我想实现我上面提到的预期功能。请帮忙。如您所见,顺序无关紧要,这里 123 在两个列表中但顺序不同,因此它匹配并因此根据我的要求进行一些处理。
List<string> list1 = new List<string> () { "123", "234" };
List<string> list2 = new List<string> () { "333", "234" , "123"};
您可以为此使用 Any
方法:
var matchfound = list1.Any(x=> list2.Contains(x));
现在您可以在 matchFound
上执行条件块,如果它 returns true
您可以处理任何需要的东西。
如果您想进行不区分大小写的比较,那么您将需要使用 String.Equals
并且可以指定大小写是否对比较那些无关紧要。
使用 LINQ 查找匹配项;然后检查生成的数组大小如下:
var intersect = list1.Where(el1=>list2.Any(el2=>el2==el1));
var isMatch = intersect.Count > 0;
您可以检查相交和任意
var matchFound = list1.Intersect(list2).Any();
例如,
List<string> list1 = new List<string>{ "123", "234" };
List<string> list2 = new List<string>{ "333", "234" , "123"};
var result = list1.Intersect(list2).Any();
输出True
List<string> list3 = new List<string>{"5656","8989"};
result = list1.Intersect(list3).Any();
输出False
您可以使用Intersect
查找共同元素:
var intersecting = list1.Intersect(list2);
如果你只是想知道有没有共同元素追加.Any()
:
bool atLeastOneCommonElement = intersecting.Any();
如果你想处理它们:
foreach(var commonElement in intersecting)
{
// do something ...
}
您需要从两个列表中取出所有匹配项,然后在找到匹配项时进行编码,例如
foreach (var item in list1.Where(x => list2.Contains(x)))
{
//do some processing here
Console.WriteLine($"Match found: {item}");
}
在上面的代码中,当 item
出现在两个列表中时,foreach
进行迭代。
输出: