3

我有 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"
4

2 回答 2

7

如果您只想要一个结果,请使用 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();

如果您想要所有匹配的元素,而不是使用 LINQ:

HasSet<string> common = new HashSet<string>(readArray);
result.Intersect(baseArray);
于 2013-05-13T20:41:24.940 回答
1
var match = baseArray.FirstOrDefault(x => readArray.Contains(x));
于 2013-05-13T20:41:57.587 回答