0

personList是一个 ObservableCollection 它包含assignedChores一个List<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;

或者

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

3 回答 3

4

使用Any代替Select

var result = personList.Where(pl => pl.assignedChores.Any(ac => ac.choreId == cObj.choreId));
于 2013-10-09T11:08:20.513 回答
0

尝试将 Select 替换为 Where

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

返回布尔序列

使用以下

pl.assignedChores.Where(ac => ac.choreId == cObj.choreId)
于 2013-10-09T11:09:22.893 回答
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;

——和上一个一样

或者

var result = personList.Where(pl => pl.assignedChores.Select(ac => ac.choreId == cObj.choreId).Any());
于 2013-10-09T11:11:22.950 回答