【问题标题】:Passing group by condition as parameter using Func使用 Func 按条件传递组作为参数
【发布时间】:2014-10-29 22:11:43
【问题描述】:

我有一个像下面这样的类和方法

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

    }

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

谢谢。

【问题讨论】:

    标签: c# delegates func


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,没想到会这么简单 :)
    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 2011-11-02
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2017-07-21
    相关资源
    最近更新 更多