【问题标题】:How to use Func with IQueryable that returns IOrderedQueryable如何将 Func 与返回 IOrderedQueryable 的 IQueryable 一起使用
【发布时间】:2013-02-08 15:17:06
【问题描述】:

我正在做一些关于 EF 的研究,并遇到了一个接受的函数

Func<IQueryable<Student>, IOrderedQueryable<Student>> 

只是想知道如何调用接受这种参数的函数?

【问题讨论】:

  • 想告诉我们哪个函数,以便于解释?

标签: linq


【解决方案1】:

imagine 函数是这样的,你在 Student 类中有一个属性 Id。

public static class Helper {
    public static void Test(Func<IQueryable<Student>, IOrderedQueryable<Student>> param)
        {
            var test = 0;
        }
}

那么你可以这样使用它

var student = new List<Student>().AsQueryable();//non sense, just for example
Helper.Test(m => student.OrderBy(x => x.Id));

m =&gt; student.OrderBy(x =&gt; x.Id) 是一个

Func<IQueryable<Student>, IOrderedQueryable<Student>>

IQueryable&lt;student&gt;作为参数,返回一个IOrderedQueryable&lt;Student&gt;

或者只是

Helper.Test(m => m.OrderBy(x => x.Id));

事实上,如果没有“真正的”功能,这并没有多大意义......

【讨论】:

    【解决方案2】:

    定义一个方法。

    public IOrderedQueryable<Student> OrderingMethod(IQueryable<Student> query)
    {
      return query.OrderBy(student => student.Name);
    }
    

    现在这个分配是合法的:

    Func<IQueryable<Student>, IOrderedQueryable<Student>> orderingFunc = this.OrderingMethod;
    

    现在你已经将它放在一个变量中,很容易将它传递给方法。


    你也可以内联:

    Func<IQueryable<Student>, IOrderedQueryable<Student>> orderingFunc =
      query => query.OrderBy(student => student.Name);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 2015-02-02
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多