比较字符串数组中的元素是否存在于另一个列表中c#

时间:2018-04-23 09:21:07

标签: c# arrays string list

我有一个字符串数组和一个字符串列表。例如,

string[] stringArray = {"car", "bike", "truck"};
List<string> stringList = new List<string>{"car_blue", "car_red", "truck_yellow", "ship_black", "rocket_orange"};

从数组和列表中,我想比较stringArray和stringList,并检索stringArray中的项目,也是stringList的一部分。 例如:检索到的项目应该是&#39; car_blue&#39;,&#39; car_red&#39;和&#39; truck_yellow&#39;?

3 个答案:

答案 0 :(得分:3)

您可以使用LINQ“Where使用stringList之前的部分过滤_

var result = stringList.Where(x => stringArray.Contains(x.Split('_')[0]));

答案 1 :(得分:3)

您必须Split _获取所有令牌,然后才能使用Intersect...Any

var itemsInBoth = stringList.Where(s => stringArray.Intersect(s.Split('_')).Any());

如果你想忽略这种情况,那么也接受Car_Yellow

var itemsInBoth = stringList.Where(s => stringArray.Intersect(s.Split('_'), StringComparer.OrdinalIgnoreCase).Any());

答案 2 :(得分:2)

您不必使用拆分的最佳方式是

string[] oneMinEnabledTime = stringList.Where(x => stringArray.Any(ele => x.ToLower().Contains(ele.ToLower()))).ToArray();

或者如果你想要列表

List<string> oneMinEnabledTime = stringList.Where(x => stringArray.Any(ele => x.ToLower().Contains(ele.ToLower()))).ToList();

enter image description here