2017-08-23 6 views
-3

私はこのようなリストしました:私は、LINQクエリによって別のリストに「コード」の値を取得自分のデータがnullの場合に親データを取得する方法は?

+ID+--+ParentID+--+Name+--+Code 
+1-----NULL--------A-------Aa 
+2-----NULL--------B-------Bb 
+3-----2-----------B1------NULL 
+4-----2-----------B2------NULL 
+5-----1-----------A2------NULL 

を。 コードがnullまたは空の場合

var newList = new List<string>(); 
list.ForEach(x=>newList.Add(x.Code)) 

はしかし、私はその親の「コード」を取得したいです。だから、私の新しいリストが含まれている必要があります

+Aa 
+Bb 
+Bb 
+Bb 
+Aa 

どうすればlinqでこれを行うことができますか?

+9

あなた自身の試みはありますか? –

+0

は 'newList'での順序が重要ですか?それは 'list'の項目の順序を反映するでしょうか? –

+0

はい私はいくつかのコードを試しました。しかし、彼らはスパゲッティでした。そして、はい、順序は重要です – 1teamsah

答えて

1

このクエリでは、何が必要取得します。

var q = from x in list 
     let y = list.FirstOrDefault(z => z.ID == x.ParentID) 
     select (x.Code != null ? x.Code : y.Code); 

このクエリでは、任意の項目のコードがnullの場合、それは親を持っていることを前提としています。そうしないと、null参照例外が発生します。

関連する問題