2017-11-06 4 views
-2

これは以下のコード行です。C#でLINQを使ってオブジェクトの配列を別のものに変換する

List<ModelsView> ModelsData 

ModelsData= (from l1 in data 
      select new ModelsView() 
      { 
       Id = l1.Id, 
       Name = l1.Name, 
       Age = l1.Age, 
       AgePlusTen = Age+ 10         
      }).OrderBy(i => i.PortiaId).ToList(); 

彼女には、linqを使ってModelsDataにデータを変換しています。私はそのように何か問題を抱えていません。 'AgePlusTen'フィールドを追加すると問題が発生します。ここで私はAge + 10をやっていて、Ageはこれの直前に追加されたフィールドです。それは私がAge + 10をすることを許さない。

現在の状況では、Ageが存在しないとしています。誰も私がフィールドを追加し、以前に追加されたフィールドに基づいてそれらを操作する方法を教えてもらえますか?

+2

この ''公共のint AgePlusTen {取得{返す年齢+ 10。 '' Age''自体を再考するべきですが、 '' DateTime''を保存し、それを '' DateTime.Now''と比較することをお勧めします毎年増加しなければならない「年齢」を有する。私は本当に「AgePlusTen」の裏の理由を知りたいのですか? –

答えて

1

コンパイラはあなたの質問に答えました。いいえ、できません。

なぜAgePlusTen = l1.Age+ 10を使用することはできませんか?それはうまくいくはずです。

+0

tatは私のことわざです。 –

1
List<ModelsView> ModelsData 

ModelsData= (from l1 in data 
      let agePlusTen = l1.Age + 10 // add this 
      select new ModelsView() 
      { 
       Id = l1.Id, 
       Name = l1.Name, 
       Age = l1.Age, 
       AgePlusTen = agePlusTen // use it here       
      }).OrderBy(i => i.PortiaId).ToList(); 

letサブ式の結果を保存することができます。それ自身を照会できる列挙型を定義するためにも使用できます。

あなたはここでそれについての詳細を調べることができます。link

あなたが好きな `` AgePlusTen``メンバーにすることを検討すべきである
+0

これは良い方法です。ありがとう –

+0

ああ、私はあなたに単純な例を与えたと推測しています^^まだいつかはいつも便利になるでしょう。楽しいコーディングをしてください! –

+0

私は考えていなかった 'let 'のためにupvoted ...(私はLINQのものに本当に来るときラムダ人の多くです) – GPW

関連する問題