2017-06-06 4 views
1

で作成中に自己参照を選択: Self-references in object literal declarationsLINQのは、基本的に私が欲しいものをここに答えが、C#でするのと同じであるC#の

私は何を持っていることは、このコードです:もちろん

private List<myObject> myFunction() 
{ 
    return myList.Select(l => new myObject 
    { 
     propA = 6, 
     propB = 3, 
     propC = propA + propB 
    } 
    ).ToList(); 
} 

それがありません私はpropAとpropBをこのように参照することができないので、動作しません。それはそれを行う正しい方法は何ですか?

はありがとう

+2

あなたは 'propC'計算可能にするために考えることができます。つまり'公共int型propC =>がpropa + propBとしてそれを宣言する; ' –

答えて

4

あなたはラムダ式で体を使用することができます。

private List<myObject> myFunction() 
{ 
    return myList.Select(l => 
    { 
     var myObject = new myObject 
     { 
      propA = 6, 
      propB = 3   
     }; 

     myObject.propC = myObject.propA + myObject.propB; 

     return myObject; 

    }).ToList(); 
} 

それとも、propCのゲッターに合計を返すことができます。

public int propC 
{ 
    get 
    { 
     return propA + propB; 
    } 
} 

そして、あなたが設定する必要はありません。 propC

+0

あなたがmyObjectというを返す'欠けている; ' –

+0

@JenishRabadiya、おかげで、編集しました –

3

オブジェクトに対してLinqを使用していない場合(つまり、lambdaは式でなければならず、SQL/Entity FrameworkへのLinqのようなメソッド代理人ではありません)、これは匿名オブジェクトと2つのステートメントを選択します。

return myList 
    .Select(l => new { 
     propA = 6, 
     propB = 3}) 
    .Select(x => new myObject{ 
     propA = x.propA, 
     propB = x.propB, 
     propC = x.propA + x.propB 
    }) 
    .ToList(); 
関連する問題