c# - 使用LINQ的另一个数组中的数组条目索引

时间:2016-04-05 21:09:17

标签: c# arrays linq substring

我有一个字符串数组:

string[] stringArray = {"aaa", "bbb", "ccc", "aaa", "ccc", "ddd"};

我想得到这个数组的所有索引,其中这些字符串的子字符串在另一个数组中:

string[] searchArray = {"a","b"};

我想得到的答案是:

index = {0,1,3};

searchArray的一个条目的灵魂就是:

List<int> index = stringArray.Select((s, i) => new { i, s })
            .Where(t => t.s.Contains(searchArray[1]))
            .Select(t => t.i)
            .ToList();

所有参赛作品的解决方案是:

List<int> index = new List<int>();
foreach (string str in searchArray)
            index.AddRange(stringArray.Select((s, i) => new { i, s })
            .Where(t => t.s.Contains(str))
            .Select(t => t.i)
            .ToList());
index.Sort();

但出于好奇,在LINQ中只使用一个命令是否有任何解决方案?

1 个答案:

答案 0 :(得分:6)

是的,您只需要Any来查看数组元素中是否包含“任何”目标字符串:

List<int> index = stringArray
    .Select((Value, Index) => new { Value, Index })
    .Where(pair => searchArray.Any(target => pair.Value.Contains(target)))
    .Select(pair => pair.Index)
    .ToList();