C# 比较字符串数组中的元素是否存在于另一个列表c中#
我有一个字符串数组和一个字符串列表。比如说,C# 比较字符串数组中的元素是否存在于另一个列表c中#,c#,arrays,string,list,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"}; string[]stringArray={“汽车”、“自行车”、“卡车”}; List stringL
string[] stringArray = {"car", "bike", "truck"};
List<string> stringList = new List<string>{"car_blue", "car_red", "truck_yellow", "ship_black", "rocket_orange"};
string[]stringArray={“汽车”、“自行车”、“卡车”};
List stringList=新列表{“车蓝”、“车红”、“卡车黄”、“船黑”、“火箭橙”};
从数组和列表中,我想比较stringArray和stringList,并检索stringArray中的项目,这些项目也是stringList的一部分。
取回的物品应该是“蓝色汽车”、“红色汽车”和“黄色卡车” 您可以使用LINQ'
Where
来过滤stringList
,使用前面的部分:
var result = stringList.Where(x => stringArray.Contains(x.Split('_')[0]));
您必须按分割,以获取所有令牌,然后您可以使用相交…任何:
var itemsInBoth = stringList.Where(s => stringArray.Intersect(s.Split('_')).Any());
如果您想忽略此情况,也可以接受Car\u Yellow
:
var itemsInBoth = stringList.Where(s => stringArray.Intersect(s.Split('_'), StringComparer.OrdinalIgnoreCase).Any());
不必使用拆分的最好方法是
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();
List-oneMinEnabledTime=stringList.Where(x=>stringArray.Any(ele=>x.ToLower().Contains(ele.ToLower())).ToList();
你试过什么?你的代码在哪里?我试过“stringList.Intersect(stringArray);”,但没有找到匹配项。“car”不是“car_blue”。“car_blue”是“car_blue”。是否需要列表
中的字符串始终有“u”,并且字符串的第一部分应与数组
中的字符串匹配?@LittleFlyingTurtle如果你的列表
中的字符串中没有“u”,你应该根据此说明编辑你的问题。并对同样的答案进行评论。。我想路西法的答案在任何情况下都会对你有所帮助(有或没有“uz”),我会添加.ToList()
更好地执行resultx.Split(“'''[1])也很重要。我已经尝试了你的方法,但仍然无法检索到我想要的项目列表。然而,我的列表中的项目看起来是这样的:“陆地\\汽车\蓝色”,“海洋\\船舶\黑色”。。。我想不出这个方法有什么问题。你面临的问题是什么?