嵌套 where 子句

问题描述 投票:0回答:2

我有一本用户词典

Dictionary<String, User> usersBase

每个用户都有一个评分列表

List<UserRating> ratings
。每个评级包含一个电影 ID 和评级的字符串。

class UserRating
{
        private String movieId;
        private int rating;
}

我正在尝试获取对特定 ID 进行评分的用户列表

List<User> commun = new List<User>();
commun = usersBase.Values.Where(x => x.Ratings.Where(y => y.MovieId == movieId)).ToList(); 

我有以下错误

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

有人可以向我解释如何执行此操作以及为什么会出现此错误吗?

c# linq
2个回答
5
投票

.Where
需要一个返回 bool 的 lambda。您的嵌套 where 子句将返回 IEnumerable。

试试这个:

 commun = usersBase.Values.Where(x => x.Ratings.Any(y => y.MovieId == movieId)).ToList();

2
投票

使用

.Any

List<User> commun = new List<User>();
commun = usersBase.Values.Where(x => x.Ratings.Any(y => y.MovieId == movieId)).ToList(); 

内部

.Where
返回
IEnumerable<TP4_IFT501.UserRating>
。当外部
.Where
需要布尔值时,您正在向
IEnumerable
提供数据,这就是您收到错误的原因。

© www.soinside.com 2019 - 2024. All rights reserved.