0

我有一个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”匹配的索引。

4

4 回答 4

2

此 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)
        });
于 2012-05-10T09:41:47.023 回答
1

那是你需要的吗?

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});
于 2012-05-10T09:43:53.670 回答
0

我想这取决于你想要的输出 - 这会给你一个像这样的投影:

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)
    });
于 2012-05-10T09:48:07.393 回答
0

这给了你所有符合你的“词”的对象:

from a in aList from b in a.bList where b.word.Equals("word") select b;
于 2012-05-10T09:50:11.700 回答