Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将对象添加到BindingList中的BindingList_C#_Linq_List - Fatal编程技术网

C# 将对象添加到BindingList中的BindingList

C# 将对象添加到BindingList中的BindingList,c#,linq,list,C#,Linq,List,我有一个活动的bindinglist,每个活动都有一个BuyOrders的bindinglist bindingListActivty.Select(k => k._dataGridViewId == 1); 如果理解正确,我可以选择活动,但无法访问活动中的任何方法。如何在不创建bindinglist的新实例的情况下访问该方法 我认为这会管用,但不行 bindingListActivty.Select(k => k._dataGridViewId == 1).addBuyOrder

我有一个活动的bindinglist,每个活动都有一个BuyOrders的bindinglist

bindingListActivty.Select(k => k._dataGridViewId == 1);
如果理解正确,我可以选择活动,但无法访问活动中的任何方法。如何在不创建bindinglist的新实例的情况下访问该方法

我认为这会管用,但不行

bindingListActivty.Select(k => k._dataGridViewId == 1).addBuyOrders(new BuyOrders());

你可以试试这个:

// 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());

Select返回一个
IEnumerable
,它将不包含您的
addBuyOrders
方法。您需要使用
foreach
,或者可以使用
FirstOrDefault
Where
子句来获取公开该方法的单个对象

例如:

foreach:

var activities = bindingListActivty.Select(k => k._dataGridViewId == 1);
foreach(var a in activities)
{
    a.addBuyOrders(new BuyOrders());
}
FirstOrDefault(根据where子句,这可能更有意义):


您必须了解
IEnumerable.Select()
不用于查询。对于任何查询,都需要使用Where()、First()或FirstOrDefault()。Select()是每个元素的投影。这意味着您正在执行从T1->T2的转换。您已将每个活动投影到布尔值(
k.\u dataGridViewId==1
)上。结果类型

bindingListActivty.Select(k => k._dataGridViewId == 1);

IEnumerable
bindingListActivty.Select(k => k._dataGridViewId == 1);
IEnumerable<bool>