Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通用LINQ OrderBy Lambda表达式的帮助_C#_Linq_Linq To Entities_Sql Order By_Expression - Fatal编程技术网

C# 通用LINQ OrderBy Lambda表达式的帮助

C# 通用LINQ OrderBy Lambda表达式的帮助,c#,linq,linq-to-entities,sql-order-by,expression,C#,Linq,Linq To Entities,Sql Order By,Expression,试图在IQueryable上获得订单,但运气不太好 以下是我的方法: public ICollection<T> FindAll<T>(Expression<Func<T,bool>> predicate, Expression<Func<T,int>> orderingKey) where T : Post { return repository .Find()

试图在IQueryable上获得订单,但运气不太好

以下是我的方法:

public ICollection<T> FindAll<T>(Expression<Func<T,bool>> predicate, Expression<Func<T,int>> orderingKey) where T : Post
{
    return repository
             .Find()
             .Where(predicate)
             .OfType<T>()
             .OrderBy(orderingKey)
             .ToPagedList();
}
但如果我想这样做,我就不会:

FindAll(p => p.PostName == "Foo", p => p.DateModified);
当然,它不起作用,因为我已经将表达式声明为
t,int
,而上面的表达式的类型是
t,DateTime

如何声明它,以便我可以按实体(Post)的任何属性排序

这是LINQ实体(实体框架4.0)。

采用以下类型的键选择器:

Expression<Func<TSource, TKey> keySelector>
表达式
如果将orderingKey更改为此类型的表达式,则它将起作用。您还需要添加另一个类型参数

public ICollection<T> FindAll<T, TKey>(
    Expression<Func<T, bool>> predicate,
    Expression<Func<T, TKey>> orderingKey
) where T : Post
公共ICollection FindAll(
表达式谓词,
表达式排序键
)T:邮局在哪里
采用以下类型的键选择器:

Expression<Func<TSource, TKey> keySelector>
表达式
如果将orderingKey更改为此类型的表达式,则它将起作用。您还需要添加另一个类型参数

public ICollection<T> FindAll<T, TKey>(
    Expression<Func<T, bool>> predicate,
    Expression<Func<T, TKey>> orderingKey
) where T : Post
公共ICollection FindAll(
表达式谓词,
表达式排序键
)T:邮局在哪里

您必须至少为排序键定义一个通用参数类型。返回泛型类型,而不是返回int

e、 g

public ICollection FindAll(表达式谓词,表达式排序键),其中TPost:Post
{
返回存储库
.Find()
.Where(谓词)
第()类
.OrderBy(orderingKey)
.ToPagedList();
}

您必须至少为排序键定义一个通用参数类型。返回泛型类型,而不是返回int

e、 g

public ICollection FindAll(表达式谓词,表达式排序键),其中TPost:Post
{
返回存储库
.Find()
.Where(谓词)
第()类
.OrderBy(orderingKey)
.ToPagedList();
}

那么a)我应该将方法声明更改为什么,以及b)我应该如何更改用法?@RPM1984:你不必更改用法。那么a)我应该将方法声明更改为什么,以及b)我应该如何更改用法?@RPM1984:你不必更改用法。看看[这个答案][1]干杯[1]:看看[这个答案][1]干杯[1]: