我在WinForm应用程序上有一个ComponentOne Grid控件,我想绑定一个"LINQ查询",而不是整个DbSet。
如果我需要完整的DbSet,答案在这里:不支持直接绑定到存储查询(DbSet,DbQuery,DbSqlQuery)的数据实体框架5
gridControl1.DataSource = context.capitulo.Local.ToBindingList();
context.capitulo.Load();
但如果我想下订单和/或像这样的条件,这是不起作用的
gridControl1.DataSource = context.capitulo.OrderBy(x => x.Id).Local.ToBindingList();
context.capitulo.Load();
因为CCD_ 1是CCD_ 2的性质,而不是CCD_。我找到了很多WPF的解决方案,但没有找到WinForms的解决方案。
var capituloList = new ObservableCollection<capitulo>(context.capitulo.Local.OrderBy(x => x.Id));
gridControl1.DataSource = capituloList.ToBindingList();
context.capitulo.Load();
您需要将LINQ查询应用于可绑定集合,然后获得另一个可绑定集合。这是用LiveLinq完成的,它是ComponentOne套装的一部分(与C1DataSource一起,ComponentOne WinForms中有一个),所以你可能已经拥有了它。只需使用AsLive()扩展方法:
gridControl1.DataSource=context.capitulo.Local.AsLive().OrderBy(x=>x.Id);
要使AsLive()可用,您需要
使用C1.WPF.LiveLinq;
(但这里的WPF并不意味着你在使用WPF,它只是一个名称,你仍然在WinForms中)