C# 使用Func将group by条件作为参数传递

C# 使用Func将group by条件作为参数传递,c#,delegates,func,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 } 公共类产品{ 公共int Id{get;set;} 公共字符串名称{get;set;

我有一个类和方法如下

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

}
公共类产品{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
私有无效方法(列出产品)
{
var group=products.GroupBy(x=>x.ProductId)
等
}
是否可以通过条件x=>x.ProductId作为参数传递group by?因为有时候我想按名字,身份证等等来分组

请找个人帮忙好吗?我试图实现Func Deletegate,但我面临数据类型不匹配的问题

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

     var grouped = products.GroupBy(groupByCond)

     ....etc

    }
private void方法(列出产品,Func groupByCond)
{
var group=products.GroupBy(groupByCond)
等
}
但对于按名称分组,它需要的不是long,而是string类型。是否有人能帮助使它成为通用的,这样它就可以接受所有类型


谢谢。

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

private void Method<TProperty>(List<Product> products, Func<Product, TProperty> groupByCond)
private void方法(列出产品,Func groupByCond)

谢谢,没想到会这么容易:)