2016-10-12 9 views
0

linqを使ってリンクリストのノード値を更新したいと思います。リストをトラバースして、正しいノードを見つけ、値を更新することはできますが、linqメソッドがより洗練されたものになると思います。任意の助けlinqを使ってリンクリストのノード値を更新するには

// get IV value where Node BookID=4 
var val = Globals.BookLL.Where(B => B.BookID == 4).Select(B => B.IV).Single(); 

// can update first node using this method 
Globals.BookLL.First.Value.IV = 999; 

// can upddate IV by traversing list 
LinkedListNode<Globals.Node> Current = Globals.BookLL.First; 
while (Current != null) 
      { 
       if(Current.Value.BookID==4) 
       { 
        Current.Value.IV = 444; 
       } 
       Current = Current.Next; 
      } 

    // how can you update IV using linq? 
    Globals.BookLL.Find(B => B.BookID == 4).Value.IV = 999;  // cannot convert lambda expression to type <Main.Globals.Node> because it is not a delegate type 

ありがとう:

これはコンパイルエラーcannot convert lambda expression to type <Main.Globals.Node> because it is not a delegate typeを与える私の試みです。

+0

ifuは 'First'を呼び出します:' Globals.BookLL.First() ' –

答えて

2
Globals.BookLL.Single(b => b.BookId == 4).IV = 44; 

です変更します。

+0

ありがとうこれは機能します。 – Zeus

+0

ネストされたリンクリストに同じメソッドを使用できますか?私はこれでエラーが発生します: '' var K = Globals.BookLL.Single(B => B.BookID == 4); var G = K.GreeksLL.Single(G => G.BookOrComp == "Book" && G.GreekType == "Delta");ローカルまたはパラメータ名Gをこのスコープで宣言することはできません... " – Zeus

+0

はエラーを発見しました!助けをもう一度感謝 – Zeus

0
Globals.BookLL.Find(B => B.BookID == 4) 

これはIEnumerable<Globals.Node>を返し、あなたは、LINQのFirst()を使用する必要があります。

Globals.BookLL.First(B => B.BookID == 4).Value.IV = 999; 
+0

' First() 'は' Value'プロパティを持たない 'BookLL'を返します – fubo

+0

ありがとうございますfuboが正しい。私は '' IV''にコンパイルエラーが出ます。 '' doubleはIVの定義を含んでおらず、拡張メソッドIVは受け付けません.... '' – Zeus

+0

みなさん、ありがとう、本当にありがとう。 – Zeus

2

項目を決定するために

Globals.BookLL val = Globals.BookLL.Single(B => B.BookID == 4); 

を使用する場合は、あなたがFind()

Globals.BookLL.Find(val).Value.IV = 999; 
を使用することができます

はBookIdsがユニークである場合は、singleを使用することができ、それは価値

+0

最初の '' BookLL - コンパイルエラーが発生しました... '' – Zeus

+0

@Zeusは 'BookL'を' Globals.BookLL'に置き換えました – fubo

+0

助けてくれてありがとうございました – Zeus

関連する問題