2014-08-28 119 views
0

我在WinForm应用程序上有一个ComponentOne网格控件,我想绑定一个“LINQ查询”而不是整个DbSet。WinForms数据绑定实体框架6

如果我需要完整的DbSet答案就在这里:Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported Entity Framework 5

gridControl1.DataSource = context.capitulo.Local.ToBindingList(); 
context.capitulo.Load(); 

但是如果我想要把订单和/或本不工作在那里的条件,如:

gridControl1.DataSource = context.capitulo.OrderBy(x => x.Id).Local.ToBindingList(); 
context.capitulo.Load(); 

因为LocalDbSet的财产,而不是IQuerable。 我发现很多WPF的解决方案,但对于WinForms却没有解决方案。

回答

0
var capituloList = new ObservableCollection<capitulo>(context.capitulo.Local.OrderBy(x => x.Id)); 

gridControl1.DataSource = capituloList.ToBindingList(); 

context.capitulo.Load(); 
+0

有了这个解决方案时添加或网格上删除一行我想念结合。它仅适用于更新现有值。 – Nazareno 2014-08-28 12:30:41

0

您需要将LINQ查询应用于可绑定集合并获取另一个可绑定集合。这与ComponentOne套装的一部分LiveLinq(与C1DataSource一起,ComponentOne WinForms中有一套)完成,因此您可能拥有它。只需使用AsLive()扩展方法:

gridControl1.DataSource = context.capitulo.Local.AsLive()。OrderBy(x => x.Id);

要有AsLive()可用,您需要使用C1.WPF.LiveLinq

;

(但WPF这里没有你正在使用WPF不是这个意思,它只是一个名字,你仍然在的WinForms)

+0

它给了我这个错误:集合不是类型EntityCollection 。 – Nazareno 2014-08-31 14:57:17