如何使用返回IOrderedQueryable的IQueryable使用Func

时间:2013-02-08 15:17:07

标签: linq

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

的函数
Func<IQueryable<Student>, IOrderedQueryable<Student>> 

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

2 个答案:

答案 0 :(得分:10)

想象函数是这样的,并且你在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 => student.OrderBy(x => x.Id)

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

IQueryable<student>作为参数,返回IOrderedQueryable<Student>

或只是

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

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

答案 1 :(得分:3)

定义方法。

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);