我对Lambda语的认知是个极强的故事,而我可以撰写使用Lambda语(Laurabda LINQ)的密码,Im试图书写我自己的方法,其中要用Lambda语表达几个论点。
背景: I m试图书写一种方法,从字面上来说从纽约的另一种物体类型中回收树木。 我迄今有以下几个方面:
public class TreeItem
{
public string Id { get; set; }
public string Text { get; set; }
public TreeItem Parent { get; protected set; }
public IList<TreeItem> Children
{
get
{
// Implementation that returns custom TreeItemCollection type
}
}
public static IList<TreeItem> GetTreeFromObject<T>(IList<T> items,
Expression<Func<T, string>> id,
Expression<Func<T, string>> text,
Expression<Func<T, IList<T>>> childProperty) where T : class
{
foreach (T item in items)
{
// Errrm!?? What do I do now?
}
return null;
}
}
......可以通过......
IList<TreeItem> treeItems = TreeItem.GetTreeFromObject<Category>(
categories, c => c.Id, c => c.Name, c => c.ChildCategories);
我可以用扼杀价值观和公正的思考来取代这些表述,但我却试图避免这种说法,因为我想把它做得很强。
我之所以这样做,是因为我有控制,接受一个类型的树木清单,而我有几十种不同的类型,它们都是在像结构这样的树种中,并且不想书写每种类型(遵守德国南盟原则)的恰当换算方法。
我是否这样做? 也许有更好的办法这样做?