我在动态LINQ 的VS2008示例中找到了一个示例,它允许您使用类似sql的字符串(例如,OrderBy("Name, Age DESC"))用于排序.不幸的是,包含的方法仅适用于IQueryable<T>;.有没有办法获得此功能IEnumerable<T>?
我有一组CLR对象.该对象的类定义有三个属性:FirstName,LastName,BirthDate.
我有一个字符串,反映了集合应该排序的属性的名称.另外,我有一个排序方向.如何将此排序信息动态应用于我的收藏?请注意,排序可以是多层的,因此我可以按LastName排序,然后按FirstName排序.
目前,我正在尝试以下运气:
var results = myCollection.OrderBy(sortProperty);
Run Code Online (Sandbox Code Playgroud)
但是,我收到的消息是:
...不包含'OrderBy'的定义,并且最好的扩展方法重载......有一些无效的参数.
好的,我找到了这个,这将允许我这样做:
public IList<Item> GetItems(string orderbyColumn)
{
return _repository.GetItems().OrderBy(orderByColumn).ToList();
}
Run Code Online (Sandbox Code Playgroud)
这是进行"动态"排序的最佳方式吗?我希望能够将列名作为字符串(和排序方向)传递给我的服务,并让它以正确的方式排序.