我有一个类和方法如下
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
}
但是对于按名称分组,而不是长期它需要类型字符串。有人可以帮助制作这种通用的,以便它接受所有类型吗?
感谢。
答案 0 :(得分:2)
就像对待任何其他通用方法一样,使用泛型类型参数(例如,TProperty
)而不是long
。
private void Method<TProperty>(List<Product> products, Func<Product, TProperty> groupByCond)