首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将对象添加到BindingList中的BindingList中

将对象添加到BindingList中的BindingList中
EN

Stack Overflow用户
提问于 2014-09-24 13:51:51
回答 3查看 1.1K关注 0票数 5

我有一个活动的绑定列表,每个活动都有一个BuyOrders的绑定列表。

代码语言:javascript
复制
bindingListActivty.Select(k => k._dataGridViewId == 1);

如果理解正确,我可以选择活动,但不能访问活动中的任何方法。如何在不创建绑定列表的新实例的情况下访问方法?

我想这能行,但不行

代码语言:javascript
复制
bindingListActivty.Select(k => k._dataGridViewId == 1).addBuyOrders(new BuyOrders());
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-24 13:58:16

你可以试试这个:

代码语言:javascript
复制
// Get the activity from bindingListActivity, whose k._dataGridViewId is equal to 1.
var activity = bindingListActivty.SingleOrDefault(k => k._dataGridViewId == 1);

// If the activity has been found and the a new BuyOrders object.
if(activity!=null)
    activity.addBuyOrders(new BuyOrders());
票数 3
EN

Stack Overflow用户

发布于 2014-09-24 13:59:55

选择返回一个IEnumerable<T>,它将不包含您的addBuyOrders方法。您需要使用foreach,也可以使用FirstOrDefaultWhere子句来获取公开该方法的单个对象。

例如:

前程:

代码语言:javascript
复制
var activities = bindingListActivty.Select(k => k._dataGridViewId == 1);
foreach(var a in activities)
{
    a.addBuyOrders(new BuyOrders());
}

FirstOrDefault (基于where子句,这可能更有意义):

代码语言:javascript
复制
var activity = bindingListActivty.Where(k => k._dataGridViewId == 1).FirstOrDefault();
if (activity != null)
{
    activity.addBuyOrders(new BuyOrders());
}
票数 5
EN

Stack Overflow用户

发布于 2014-09-24 18:14:00

重要的是要理解IEnumerable<T>.Select()不是用于查询的。您需要在任何查询中使用Where()、First()或FirstOrDefault()。Select()是每个元素的投影。这意味着您正在执行来自T1 -> T2的转换。您已经在布尔值(k._dataGridViewId == 1)上对每个活动进行了投影。结果类型

代码语言:javascript
复制
bindingListActivty.Select(k => k._dataGridViewId == 1);

代码语言:javascript
复制
IEnumerable<bool>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26018675

复制
相关文章

相似问题

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