Ef code first 是否可以从数据库集创建IOrderedEnumerable bindingsource?
我想动态指定要排序的列数 我的代码如下Ef code first 是否可以从数据库集创建IOrderedEnumerable bindingsource?,ef-code-first,entity-framework-5,Ef Code First,Entity Framework 5,我想动态指定要排序的列数 我的代码如下 var dset = Context.People; var QuickSearch = "a"; var qry = dset.Where( p => p.LastName.Contains(QuickSearch) ); qry.Load(); BindingSource bindingsource; bindingSource.DataSource = dset.Local.ToBindingList()
var dset = Context.People;
var QuickSearch = "a";
var qry = dset.Where( p => p.LastName.Contains(QuickSearch) );
qry.Load();
BindingSource bindingsource;
bindingSource.DataSource = dset.Local.ToBindingList();
我想在答案中使用这个技巧
因此,我应该能够做一些类似(简化)
IQueryable qry=null;
qry=base.Context.People.OrderBy(x=>x.FirstName);//这没关系
qry=qry.ThenBy(y=>y.LastName);//这不会编译
但是它不编译
[更新]因为ThenBy是IOrderable的一种扩展方法,所以我的问题变得
是否可以从数据库集创建IOrderedEnumerable bindingsource?将其更改为:
var qry = base.Context.People.OrderBy(x=>x.FirstName);
qry = qry.ThenBy(...)
或
IOrderedQueryable qry=null;
qry=base.Context.People.OrderBy(x=>x.FirstName);
qry=qry.ThenBy(y=>y.LastName);
原因是您将qry声明为
IQueryable
,而ThenBy
是IOrderedQueryable
的扩展方法(这是OrderBy
返回的)当我这样做时,我得到一个错误`无法将行qry=base.Context.People.OrderBy(x=>x.FirstName)
上的type system.linq.IOrderedQueryable转换为target type system.linq.iorderednumerable或使用第一种方法
var qry = base.Context.People.OrderBy(x=>x.FirstName);
qry = qry.ThenBy(...)
IOrderedQueryable<Person> qry = null;
qry = base.Context.People.OrderBy(x=>x.FirstName);
qry = qry.ThenBy(y=>y.LastName);