OrderBy、GetNewBindingList 和 Linq to SQL

发布于 2024-10-18 20:27:32 字数 627 浏览 1 评论 0原文

我有一个后台工作人员,负责将数据从数据库加载到临时结构中。

Data d = new Data();
d.listGroup = context.Groups.GetNewBindingList();
d.tbUser = context.Users.OrderBy(x => x.Name);        
d.listPriceLevel = context.PriceLevels.GetNewBindingList();
e.Result = d;

问题是第三行 (d.tbUser = ... ) 正在被延迟加载。 当然,我可以这样做:

context.Users.OrderBy( x => x.Name ).ToList();

但话又说回来,这不是一个可绑定列表,对其所做的任何更改都不会传播回数据库。

所以我想我需要这样的东西:

d.tbUser = context.Users.OrderBy( x => x.Name ).GetNewBindingList();

但这不起作用。 目标是:检索用户列表,按其姓名排序作为可绑定列表。 有什么想法吗?

感谢您抽出时间!

I have a background worker that performs loading of data from the database into a temporary structure.

Data d = new Data();
d.listGroup = context.Groups.GetNewBindingList();
d.tbUser = context.Users.OrderBy(x => x.Name);        
d.listPriceLevel = context.PriceLevels.GetNewBindingList();
e.Result = d;

The problem is that the 3rd line (d.tbUser = ... ) is being lazy-loaded.
Sure, I can do:

context.Users.OrderBy( x => x.Name ).ToList();

But then again, this is not a Bindable List, any changes made to it won't propagate back to the DB.

So I think I need something like:

d.tbUser = context.Users.OrderBy( x => x.Name ).GetNewBindingList();

But that doesn't work.
The goal is: retrieve a list of users, ordered by their name as a bind-able list.
Any ideas?

Thanks for your time!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷默言语 2024-10-25 20:27:32

添加 OrderBy(与任何其他查询函数一样)会将您的查询转换为 IQueryable。幸运的是,LINQ-to-SQL 的内部查询类型 (DataQuery) 通过其 IListSource 实现提供了 BindingList

要获取给定查询的 BindingList,您可以执行以下操作:

var bindingList = ((IListSource)query).GetList();

在您的情况下:

d.tbUser = ((IListSource)context.Users.OrderBy(x => x.Name)).GetList();

虽然 GetList 的返回类型是 IList,但它是事实上,一个实际的 BindingList

Adding OrderBy (like any of the other query functions) turns your query into an IQueryable<TEntity>. Fortunately, LINQ-to-SQL's internal query type (DataQuery<TEntity>) provides a BindingList<TEntity> via its implementation of IListSource.

To get a BindingList for a given query, you can do this:

var bindingList = ((IListSource)query).GetList();

In your case:

d.tbUser = ((IListSource)context.Users.OrderBy(x => x.Name)).GetList();

While the return type of GetList is IList, it is, in fact, an actual BindingList<User>.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文