Tôi đang xây dựng một phương pháp mở rộng trên IList để có thể xuất các thuộc tính được chỉ định của bất kỳ đối tượng nào được chuyển vào danh sách dưới dạng danh sách và xuất dưới dạng CSV chuỗi. Dường như:Cách sử dụng các biểu thức lambda cho hàm có danh sách đại biểu
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
}
}
Ngay bây giờ, tôi phải gọi phương pháp này như sau:
// 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);
Có cách nào tốt hơn để vượt qua trong các biểu thức lambda của tôi mà không cần phải dứt khoát tuyên bố các cột biến, một cái gì đó như:
// This doesn't compile
string s = Products.OutputCSVString(new { p => p.Id , p => p.Name });