のために私はループを持っています。LINQのは、ネストされたループ
LINQ文を探していますが、わかりません。私はそれを試してみました
result = myColl
.SelectMany(x => x.MyList)
.SelectMany(x => /* how to get the key of the outer loop here */ + x)
のために私はループを持っています。LINQのは、ネストされたループ
LINQ文を探していますが、わかりません。私はそれを試してみました
result = myColl
.SelectMany(x => x.MyList)
.SelectMany(x => /* how to get the key of the outer loop here */ + x)
これは、クエリ式で簡単である:
(from x in myColl
from y in x.MyList
select x.MyKey + y).ToList()
これに変換これが機能:キーがである
myColl
.SelectMany(x => x.MyList.Select(item => new { List = x, Item = item }))
.Select(x => ...) //rest of the query, whatever you like
リストとアイテムの両方を保持してください。匿名型(またはその他のコンテナ)を使用してクエリを介してそれらのチャネルを配信します。
「親」要素へのアクセスを許可するoverload of SelectManyがあります。それはこのようになりますあなたの具体的な例
: ListOfList.SelectMany(リスト=> list.InnerList、(LST、要素)=> HandleInnerListAndElementFromIt(LST、要素))
result = myColl.SelectMany(x => x.MyList,(x1,x2)=>DoSomething(x1,x2));
EDITを追加しました:SelectManyメソッド呼び出しから2つのラムダのパラメータがあることを
result = myColl.SelectMany(x=>x.MyList,(x,y)=>x.MyKey+y));
は注意してください。
最初にlambdaは "x"を取り、新しいEnumerableを返します。 x => x.MyList
2番目のラムダは "x"と "y"をとり、新しい結果を生成します。 (X、Y)=> x.MyKey + Y
私はそれが涼しくて、私が必要とするものを読むのは難しいですが、私は認めなければなりません。 – HimBromBeere
私はそれを見ることができます。私は明確にするために編集しました。がんばろう。 – Tormod
私は個人的にLINQクエリは、よりあいまいかもしれ場所ごとの入れ子になった
var result = from x in myCol1
from y in x.MyList
select x.MyKey + y;
そう簡単に...私はそれが機能しなければならないことを知っていた。ありがとう:) – HimBromBeere
は、読みやすいクエリ構文を好むときです。この場合、なぜlinqを使用する必要があると思いますか? – Loofer