向多对多关系添加 where 子句

adding where clauses to a many many relationship

我想为餐厅建立一个目录,搜索基于三个条件 我遇到的问题是添加第三个使用 typecuisine 的 where 子句,就像您在代码中看到的那样 2 个第一个条件很好my entity

var query = db.Restaurants.AsQueryable();

if (!string.IsNullOrEmpty(Name))
    query = query.Where(c => c.Nom.Contains(Name));

if (RegionId != Guid.Empty)
    query = query.Where(c => c.RegionId == RegionId);

//how to get typecuisine ID from table Restaurant instead it's only in  table TypeCuisine


if (typeId != Guid.Empty)
    query = query.Where(tc=> tc.TypeCuisines.Where(r=>r.TypeCuisineId == typeId));

return query.ToList();

.Where 期望 return 类型的 bool 而您正在 return 内部 Where 的结果,意思是 IEnumerable.

您缺少的是 .Any() 函数而不是内部 Where

var query = db.Restaurants.AsQueryable();

if (!string.IsNullOrEmpty(Name))
    query = query.Where(c => c.Nom.Contains(Name));

if (RegionId != Guid.Empty)
    query = query.Where(c => c.RegionId == RegionId);

if (typeId != Guid.Empty)
    query = query.Where(tc=> tc.TypeCuisines.Any(r => r.TypeCuisineId == typeId));

return query.ToList();