在列表中查找项目

时间:2013-10-09 11:06:08

标签: c# linq

personList是一个ObservableCollection 它包含assignedChoresList<Chore>

我正在“尝试”做的是查找人员列表中choreId == cObj.choreId(传递给值)的所有项目。

然而,我的陈述似乎都没有允许它。我收到了错误:

  

无法隐式转换类型   System.Collections.Generic.IEnumerable<bool>到'布尔'

var choreSearch = from p in personList
                  where p.assignedChores.Select(ac=>ac.choreId == (cObj.choreId))
                  select p;

OR

var result = personList.Where(pl => pl.assignedChores.Select(ac => ac.choreId == cObj.choreId));

3 个答案:

答案 0 :(得分:4)

使用Any代替Select

var result = personList.Where(pl => pl.assignedChores.Any(ac => ac.choreId == cObj.choreId));

答案 1 :(得分:0)

尝试将Select替换为Where

pl.assignedChores.Select(ac => ac.choreId == cObj.choreId)

返回bool序列

使用以下

pl.assignedChores.Where(ac => ac.choreId == cObj.choreId)

答案 2 :(得分:0)

我试着纠正你:

然而,我的陈述似乎都没有允许它。我收到了错误:

无法将System.Collections.Generic.IEnumerable类型隐式转换为'bool'

- 您需要.Any()

var choreSearch = from p in personList
                  where p.assignedChores.Select(ac=>ac.choreId == (cObj.choreId).Any())
                  select p;

- 与之前的

一样

OR

var result = personList.Where(pl => pl.assignedChores.Select(ac => ac.choreId == cObj.choreId).Any());