11

私はEFについていくつかの調査を行っており、受け入れる機能に出くわしました

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

そのようなパラメータを受け入れる関数を呼び出す方法を知りたいですか?

4

2 に答える 2

11

関数がそのようなものであると想像してください、そしてあなたは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));

実際、これは「実際の」関数なしではあまり意味がありません...

于 2013-02-08T15:34:12.113 に答える
4

メソッドを定義します。

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);
于 2013-02-08T21:53:32.983 に答える