有没有更优雅的方法可以使用LINQ实现以下代码?
基本上,我想获取所有索引的列表,这些索引中一个列表中的字符串出现在另一个列表中。
private List<int> GetColumnIndexesToIgnore(
ReadOnlyCollection<string> listOfColumnsToIgnore, List<string> columnHeadings)
{
List<int> columnIndexesToIgnore = new List<int>();
for (int i = 0; i < columnHeadings.Count; i++)
{
if (listOfColumnsToIgnore.Contains(columnHeadings[i]))
{
columnIndexesToIgnore.Add(i);
}
}
return columnIndexesToIgnore;
}
最佳答案
您可以使用LINQ做到这一点:
var res = columnHeadings
.Select((v, i) => new {Value = v, Index = i})
.Where(p => listOfColumnsToIgnore.Contains(p.Value))
.Select(p => p.Index)
.ToList();
第一个
Select
对值及其索引进行配对,Where
子句过滤掉不需要的对,第二个Select
收集返回的索引,而ToList
从其中删除List<int>
。
关于c# - 获取List <string>中字符串的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33226601/