我有一个活动的绑定列表,每个活动都有一个BuyOrders的绑定列表。
bindingListActivty.Select(k => k._dataGridViewId == 1);如果理解正确,我可以选择活动,但不能访问活动中的任何方法。如何在不创建绑定列表的新实例的情况下访问方法?
我想这能行,但不行
bindingListActivty.Select(k => k._dataGridViewId == 1).addBuyOrders(new BuyOrders());发布于 2014-09-24 13:58:16
你可以试试这个:
// 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());发布于 2014-09-24 13:59:55
选择返回一个IEnumerable<T>,它将不包含您的addBuyOrders方法。您需要使用foreach,也可以使用FirstOrDefault和Where子句来获取公开该方法的单个对象。
例如:
前程:
var activities = bindingListActivty.Select(k => k._dataGridViewId == 1);
foreach(var a in activities)
{
a.addBuyOrders(new BuyOrders());
}FirstOrDefault (基于where子句,这可能更有意义):
var activity = bindingListActivty.Where(k => k._dataGridViewId == 1).FirstOrDefault();
if (activity != null)
{
activity.addBuyOrders(new BuyOrders());
}发布于 2014-09-24 18:14:00
重要的是要理解IEnumerable<T>.Select()不是用于查询的。您需要在任何查询中使用Where()、First()或FirstOrDefault()。Select()是每个元素的投影。这意味着您正在执行来自T1 -> T2的转换。您已经在布尔值(k._dataGridViewId == 1)上对每个活动进行了投影。结果类型
bindingListActivty.Select(k => k._dataGridViewId == 1);是
IEnumerable<bool>https://stackoverflow.com/questions/26018675
复制相似问题