【问题标题】:How Filter Binding Source Connected To linq Query过滤器绑定源如何连接到 linq 查询
【发布时间】:2014-03-27 07:30:42
【问题描述】:

我有一个 sql 表“Activity”,其中包括 .ID 、 .Activ_Code 、 .Name 、 .Start 、 .End

Dim BS as BindingSource
Dim DGView as Datagridview


BS.Datasource=(From x in Dbase.Activity select x)
BS.Filter="Activ_Code=3"
DGView.datasource=BS

这会显示“活动”表中的所有字段。 我将过滤器属性更改为“Activ_Code='3'”和“Activ_Code LIKE 3”,但它们都不起作用。

【问题讨论】:

  • 怎么样:BS.Datasource=(From x in Dbase.Activity where x.Activ_Code==3 select x)

标签: linq filter bindingsource


【解决方案1】:

来自MSDN

只有实现 IBindingListView 接口的底层列表才支持过滤。

数据源只是一个IEnumerable。您必须过滤 LINQ 查询本身。例如:

Dim mainList = (From x in Dbase.Activity select x).ToList
BS.Datasource=(From x in mainList.Where(...) select x)

并将您的过滤器放在点上。每次将数据源设置为新的过滤列表时,列表中的对象不会受到影响,因为它们不会从数据库中重新获取。

【讨论】:

  • 我不能这样做,因为每次更改查询都会丢弃基础列表中的更改。我最后需要保存更改。
  • 然后将完整列表保存在内存中,并在视图中显示过滤后的列表,来自内存列表。
  • 谢谢,这真的很有帮助。但现在我有另一个问题。从 BS 中删除记录不会影响主列表。我的意思是购买调用 BS.Removecurrent() 然后 BS.EndEdit() ,主列表保持与删除之前相同。
猜你喜欢
  • 1970-01-01
  • 2014-07-07
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多