2016-12-16 1 views
1

内のパラメータを渡すと、私持っているメソッド内で、次のコード:LINQの

someData = table.AsEnumerable() 
    .Where(row => row.someRow.Equals("Something")) 
    .Sum(row => row.AnotherRow); 

私は言い換えれば.AnotherRow

に取って代わるだろうどこかからパラメータを渡したい最後の行に、のような:

.Sum(row => row. + myParameter); 

アイデア?私は上記を試してみるとエラーになります。助けていただければ幸いです。

答えて

2

.AnotherRowを表すものを渡すことはできませんが、オブジェクトから目的の属性を選択するファンクタを渡すことができます。

たとえば、tableIEnumerable<MyClass>であるとします。

int SumSelected(Func<MyClass,int> attrSelector) { 
    return table.AsEnumerable() 
     .Where(row => row.someRow.Equals("Something")) 
     .Sum(row => attrSelector(AnotherRow)); 
} 

今、あなたは次のように、アップ追加する属性を指定し、「セレクタ」でこのメソッドを呼び出すことができます:

var totalCustomers = SumSelected(obj => obj.CustomerCount); 
var totalStores = SumSelected(obj => obj.StoreCount); 
0

私は思う:

someData = table.AsEnumerable() 
    .Where(row => row.someRow.Equals("Something")) 
g.Sum(row => Calculate(row => row.AnotherRow, row1 =>row1.AnotherRow)); 
その後、あなたはこれを行うことができます

方法計算:

private double Calculate(double d1, double d2) 
    { 
     return d1 + d2; 
    }