2重foreachをLINQで書けるのか
2重foreachをLINQを使って書けるのかが知りたいです
いろいろ試してみましたがうまく行く方法が見つかりませんでした。
2重ということでSelectManyを試してみたのですが、出力をしておしまいのものが多く、今回やりたい変数の取得がうまく行きませんでした。
Where、Selectを組み合わせてできないかも試しましたがうまく行かず、慣れていないのも事実であったためできるのであれば動いているものを見て学習したいと考え質問させていただきました。
よろしくおねがいいたします。
該当するソースコード
// 受け取り変数
int receiveImportantData;
Hoge hoge = new();
foreach(var fuga in hoge.fugaList)
{
foreach(var num in fuga.nums)
{
if(num == 3)
{
// これがしたい。2重foreachならできる
receiveImportantData = fuga.importantData;
}
}
}
var unionList = hoge.fugaList.SelectMany(fuga => fuga.nums);
foreach(var element in unionList)
{
if(element == 0)
{
receiveImportantData = /*要素を回してないので取ってこれない*/
}
}
public class Hoge
{
public List<Fuga> fugaList = new();
public Hoge()
{
for(int i = 0; i < 5; ++i)
{
Fuga fuga = new(i);
fugaList.Add(fuga);
}
}
}
public class Fuga
{
// これを抜き取りたい
public int importantData = 100;
public List<int> nums = new();
public Fuga(int setNum)
{
for(int i = 0; i < 5; ++i)
{
nums.Add(i);
}
}
}