Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WinForms数据绑定实体框架6_.net_Winforms_Linq_Entity Framework - Fatal编程技术网

.net WinForms数据绑定实体框架6

.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的属性。 我

我在WinForm应用程序上有一个ComponentOne网格控件,我想绑定一个“LINQ查询”,而不是整个DbSet

如果我需要完整的数据库集,答案如下:

但如果我想下订单和/或where条件,如:

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();