首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可绑定LINQ与连续LINQ

可绑定LINQ与连续LINQ
EN

Stack Overflow用户
提问于 2008-10-03 16:08:00
回答 6查看 4.4K关注 0票数 23

可绑定LINQ和连续LINQ的主要区别是什么?

·可绑定LINQ: www.codeplex.com/bindablelinq

·连续LINQ: www.codeplex.com/clinq

根据提供的反馈,又添加了一个项目:

·对象: obtics.codeplex.com

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-06 16:05:26

这两个包都试图解决两个问题:缺少CollectionChanged事件和动态结果集。有一个额外的问题可绑定解决,额外的自动事件触发器。

两个包都要解决的第一个问题是:

LINQ查询返回的

对象不提供CollectionChanged事件。

Continuous LINQ会自动对所有查询执行此操作,无需更改:

代码语言:javascript
复制
from item in theSource select item ;

当您将.asBindable添加到查询源对象时,Bindable LINQ会执行此操作:

代码语言:javascript
复制
from item in theSource.AsBindable() select item ;

两个包都要解决的第二个问题是:

从LINQ查询返回的

结果集是静态的。

通常,当您执行LINQ查询时,您的结果集将保持不变,直到您执行新的查询。使用这两个包,每当更新源代码时,您的结果集都会更新。(对性能不好,对实时更新有好处)

示例

代码语言:javascript
复制
var theSource = new ContinuousCollection<Customer>();
var theResultSet = from item in theSource where item.Age > 25 select item;
//theResultSet.Count would equal 0.

因为您使用的是可绑定的或连续的LINQ,所以您可以修改theSource,而theResultSet将自动包含新的项。

代码语言:javascript
复制
theSource.Add(new Customer("Bob", "Barker" , 35, Gender.Male)); //Age == 35
//theResultSet.Count would now equal 1.

Bindable LINQ提供的额外问题:(直接引用他们自己的页面)

代码语言:javascript
复制
contactsListBox.ItemsSource = from c in customers
                              where c.Name.StartsWith(textBox1.Text)
                              select c;

Bindable LINQ将检测到查询依赖于TextBox对象textBox1的Text属性。由于TextBox是WPF控件,因此Bindable LINQ知道订阅该控件上的TextChanged事件。

最终结果是,当用户键入时,查询中的项将被重新评估,并且更改将显示在屏幕上。不需要额外的代码来处理事件。

票数 26
EN

Stack Overflow用户

发布于 2009-03-03 14:26:58

我可以请您注意另一个codeplex项目吗?它被称为Obtics,并处理相同的问题(http://obtics.codeplex.com)。

它解决了第一个、第二个和额外的问题,并将反应性带到了一个非常深的水平(有一个基于LINQ的光线跟踪器的演示)。

它声称完全支持Enumerable类的所有LINQ语句和方法。

它使用另一种机制来创建实时查询:

代码语言:javascript
复制
var theResultSet = ExpressionObserver.Execute(
    () => from item in theSource where item.Age > 25 select item
).Cascade();
票数 6
EN

Stack Overflow用户

发布于 2008-12-11 19:45:26

另一件要记住的事情是,尽管BindableLinq需要在LINQ语句中调用".AsBindable()“,但是CLINQ要求您使用ContinuousCollection而不是ObservableCollection。在简要地看了这两种方法之后,我想我将使用bindable LINQ。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/167622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档