使用Func按条件传递组作为参数

本文关键字:参数 Func 条件 使用 | 更新日期: 2023-09-27 18:28:12

我有一个类和方法,如下

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=>x.ProductId作为参数来传递组?因为有时我想按名称、Id等进行分组

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

private void Method(List<Product> products, Func<Product, long> groupByCond)
    {
     var grouped = products.GroupBy(groupByCond)
     ....etc
    }

但对于按名称分组,它需要类型字符串,而不是长字符串。有人能帮助使这个泛型接受所有类型吗?

谢谢。

使用Func按条件传递组作为参数

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

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