我有一个List<a>
包含列表 ( ) 的列表 ( List<b>
)。b 类型列表中有一个字符串字段。我想通过搜索列表a找到列表b中匹配字符串的索引。我怎样才能做到这一点?
public class b
{
string Word;
bool Flag;
}
public class a
{
List<b> BList = new List<b>();
int Counter;
}
我想在列表 b 中找到与字符串“Word”匹配的索引。
此 Linq 表达式返回 BList 列表和正确找到的索引:
var Result = AList.Select(p => new
{
BList = p.BList,
indexes = p.BList.Select((q, i) => new
{
index = i,
isMatch = q.Word == "Word"
}
)
.Where(q => q.isMatch)
.Select(q=>q.index)
});
那是你需要的吗?
var alist = GetListA();
var indexes = alist.Select((ix, a) =>
a.BList.SelectMany((jx, b) =>
new {AIx = ix, BIx = jx, b.Word}))
.Where(x => x.Word == pattern)
.Select(x => new {x.AIx, x.BIx});
我想这取决于你想要的输出 - 这会给你一个像这样的投影:
indexes[0] { A = A[0], Indexes = {1,5,6,7} }
indexes[1] { A = A[1], Indexes = {4,5,8} }
...
var indexes = listA
.Select(a => new
{
A = a,
Indexes = a.BList
.Select((b, idx) => b == wordToCheck ? idx : -1)
.Where(i => i > -1)
});
这给了你所有符合你的“词”的对象:
from a in aList from b in a.bList where b.word.Equals("word") select b;