2014-08-28 116 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