0

以下の形式で結果を返すLINQクエリがあります

--Parent1
 ----子供たち
 ------キー--aa
 ------値-新規
 ----子供たち
 ------キー-bb
 ------値-古い
 --Parent2
 ----子供たち
 ------キー-cc
 ------値-テスト
 ----子供たち
 ------キー-dd
 ------値-tesst

Linqを使用して子の値を1行でフェッチしたいと思います。現在、値を取得できますが、2行のコードでそれが気に入らない

 var firstPoint = SeriesList.Select(i => i.Childs.Where(j => j.key == "aa"))
                            .FirstOrDefault();
 decimal index = firstPoint.Select(d => d.Value)
                           .FirstOrDefault();
4

3 に答える 3

2
decimal index = SeriesList.Select(i => i.Childs.Where(j => j.key == "aa"))
    .FirstOrDefault()
    .FirstOrDefault().Value;
于 2012-12-12T17:13:55.280 に答える
1
var firstPoint = SeriesList.Select(i => i.Childs.Where(j => j.key == "aa")).FirstOrDefault().Value;
于 2012-12-12T17:09:09.127 に答える
1
decimal index = SeriesList.SelectMany(p => p.Childs)
                          .FirstOrDefault(c => c.key == "aa").Value;

ただし、提供されたキーを持つ子がリストに存在する必要があることに注意してください。存在しない場合、例外が発生します。最初に子を見つけてから、子が存在する場合はその値を取得する方がよいと思います。

Childs child = SeriesList.SelectMany(p => p.Childs)
                          .FirstOrDefault(c => c.key == "aa");
if (child != null)
    index = child.Value;
于 2012-12-12T17:19:41.557 に答える