我有一个字符串数组:
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中只使用一个命令是否有任何解决方案?
答案 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();