使用Func将条件作为参数传递

时间:2014-10-29 13:57:17

标签: c# delegates func

我有一个类和方法如下

public class Product{

public int Id{get;set;}
public string Name{get;set;}
}

private void Method(List<Product> products)
{

 var grouped = products.GroupBy(x=>x.ProductId)

 ....etc

}

是否可以通过条件x =&gt; x.ProductId作为参数传递组?因为有时我想按名称分组,Id ......等等。

请帮助一下吗?我试图实现Func Deletegate,但我遇到了数据类型不匹配的问题

private void Method(List<Product> products, Func<Product, long> groupByCond)
    {

     var grouped = products.GroupBy(groupByCond)

     ....etc

    }

但是对于按名称分组,而不是长期它需要类型字符串。有人可以帮助制作这种通用的,以便它接受所有类型吗?

感谢。

1 个答案:

答案 0 :(得分:2)

就像对待任何其他通用方法一样,使用泛型类型参数(例如,TProperty)而不是long

private void Method<TProperty>(List<Product> products, Func<Product, TProperty> groupByCond)