.net WinForms数据绑定实体框架6
我在WinForm应用程序上有一个ComponentOne网格控件,我想绑定一个“LINQ查询”,而不是整个DbSet 如果我需要完整的数据库集,答案如下: 但如果我想下订单和/或where条件,如:.net WinForms数据绑定实体框架6,.net,winforms,linq,entity-framework,.net,Winforms,Linq,Entity Framework,我在WinForm应用程序上有一个ComponentOne网格控件,我想绑定一个“LINQ查询”,而不是整个DbSet 如果我需要完整的数据库集,答案如下: 但如果我想下订单和/或where条件,如: gridControl1.DataSource = context.capitulo.OrderBy(x => x.Id).Local.ToBindingList(); context.capitulo.Load(); 因为Local是DbSet的属性,而不是IQuerable的属性。 我
gridControl1.DataSource = context.capitulo.OrderBy(x => x.Id).Local.ToBindingList();
context.capitulo.Load();
因为Local
是DbSet
的属性,而不是IQuerable
的属性。
我发现WPF有很多解决方案,但WinForms没有解决方案。var capituloList=newobserveCollection(context.capitulo.Local.OrderBy(x=>x.Id));
var capituloList = new ObservableCollection<capitulo>(context.capitulo.Local.OrderBy(x => x.Id));
gridControl1.DataSource = capituloList.ToBindingList();
context.capitulo.Load();
gridControl1.DataSource=CapitalList.ToBindingList();
context.capitulo.Load();
您需要对可绑定集合应用LINQ查询,并获取另一个可绑定集合。这是通过LiveLinq完成的,LiveLinq是ComponentOne套装的一部分(与C1DataSource一起,ComponentOne WinForms中有一个),所以您可能已经拥有了它。只需使用AsLive()扩展方法:
gridControl1.DataSource=context.capitulo.Local.AsLive().OrderBy(x=>x.Id)
要使AsLive()可用,您需要
使用C1.WPF.LiveLinq
(但这里的WPF并不意味着您正在使用WPF,它只是一个名称,您仍然使用WinForms)使用此解决方案,在网格上添加或删除一行时,我会错过绑定。它仅适用于更新现有值。它给了我以下错误:集合不是EntityCollection类型。
var capituloList = new ObservableCollection<capitulo>(context.capitulo.Local.OrderBy(x => x.Id));
gridControl1.DataSource = capituloList.ToBindingList();
context.capitulo.Load();