我想創建一種方式來運行在數據表中的一些動態LINQ,我已經粘貼代碼測試代碼不是我的,我的工作就全碼,但我認爲這是不夠以瞭解我正在嘗試做的事情。添加委託表達式作爲參數
基本上我想的第二參數添加到將包含可被用於替代R => r.Field(「場」)的表達的方法。
public string GetStringValueFromData(DataTable data)
{
switch (this.MethodType)
{
case (LabelMethodType.Count):
return data.AsEnumerable().Select(r => r.Field<string>("sometextfield")).Count().ToString();
case (LabelMethodType.Sum):
return data.AsEnumerable().Sum(r => r.Field<decimal>("somenumberfield")).ToString();
case (LabelMethodType.Average):
return data.AsEnumerable().Average(r => r.Field<decimal>("anotherfield")).ToString();
}
return string.Empty;
}
所以基本上這個方法看起來像這樣。但我當然已經嘗試過,甚至沒有編譯。
public string GetStringValueFromData(DataTable data, Expression<Func<DataRow, object>> expression)
{
switch (this.MethodType)
{
case (LabelMethodType.Count):
return data.AsEnumerable().Select(expression).Count().ToString();
case (LabelMethodType.Sum):
return data.AsEnumerable().Sum(expression).ToString();
case (LabelMethodType.Average):
return data.AsEnumerable().Average(expression).ToString();
}
return string.Empty;
}
有誰可能知道什麼類型的可以使參數這個工作,這樣它將接受像R => r.Field(「sometextfield」)或R => r.Field(「somenumberfield 「)或者有其他方法的建議。
感謝
CD
嗯,首先,因爲你正在處理LINQ到對象,而不是'IQueryable',所以你只需要傳遞一個'Func',而不是'Expression'。然而,這不是你需要做的唯一改變。 –
Servy