我在IList上构建了一个扩展方法,可以将任何传递给它的对象的指定属性作为列表输出,并将其输出为CSV串。它看起来像:如何使用lambda表达式获取代理列表的函数
public static string OutputCSVString<T>(this IList<T> list, List<Func<T, string>> properties)
{
foreach (var row in list)
{
foreach(var item in properties)
{
// Do the output work, including calling item(row).
}
// Output new line
}
}
现在,我必须调用此方法,如:
// Assuming I've populated List <Product> ProductList up above...
var columns = new List<Func<Product, string>>();
columns.Add(x => x.Id);
columns.Add(x => x.Name);
string s = ProductList.OutputCSVString(columns);
有没有更好的办法在我的lambda表达式来传递,而无需显式声明的列变量,东西像:
// This doesn't compile
string s = Products.OutputCSVString(new { p => p.Id , p => p.Name });