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;
}

文字列「Word」と一致するリスト b のインデックスを検索したいと考えています。

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

これにより、「単語」を満たすすべてのオブジェクトが得られます。

from a in aList from b in a.bList where b.word.Equals("word") select b;
于 2012-05-10T09:50:11.700 に答える
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 に答える