如何获得2个字符串数组之间的第一个匹配
我有2个字符串数组。一个是基地,另一个正在改变。如何获得2个字符串数组之间的第一个匹配
string[] baseArray = { "Gold", "Silver", "Bronze" };
string[] readArray = { "Bronze", "Silver", "Gold" };
// After comparing the readArray over the baseArray the result should be this
//string match = "Gold";
我想获得第一个按照baseArray的顺序。
//Example2
string[] readArray = { "Bronze", "Silver" };
//string match should be "Silver"
如果你只想要一个结果,使用LINQ:
string firstMatch = baseArray.FirstOrDefault(readArray.Contains);
如果你只想要一个结果,而不是使用LINQ:
string firstMatch = null;
foreach(string element in baseArray)
{
if (Array.IndexOf(readArray, element) >= 0)
{
firstMatch = element;
break;
}
}
如果希望所有匹配的元素,使用LINQ:
string[] common = baseArray.Intersect(readArray).ToArray();
如果您想要al升匹配元素,不使用LINQ:比我
HasSet<string> common = new HashSet<string>(readArray);
result.Intersect(baseArray);
var match = baseArray.FirstOrDefault(x => readArray.Contains(x));
包含可能会给出错误的结果,也许我可以使用等于。 – Incognito 2013-05-13 20:46:33
@Incognito'.Contains()'在幕后使用'.Equals()'。如果一个失败了,那么两者都是。 – 2013-05-13 20:47:53
@Incognito。为什么它应该失败?由于文化? – 2013-05-13 20:51:05
1更好的解决方案。不过,我最终会做一个'FirstOrDefault()'。 – 2013-05-13 20:42:35
他希望第一场比赛不是全部。 – 2013-05-13 20:46:02
@Tim:我纠正了我的答案。 – 2013-05-13 20:47:08