使用“where”:无法将lambda表达式转换为’bool’类型

我有entity framework代码,如下所示。我在where条件中得到以下错误。

无法将lambda表达式转换为类型’bool’,因为它不是委托类型

如何克服这个错误? 这个错误的原因是什么?

static void Main(string[] args) { ClubCreation(); List selectedClubs = GetClubs("club1"); } public static void ClubCreation() { string connectionstring = "Data Source=.;Initial Catalog=NerdDinners;Integrated Security=True;Connect Timeout=30"; using (var db = new NerdDinners(connectionstring)) { Club club1 = new Club(); club1.ClubName = "club1"; Club club2 = new Club(); club2.ClubName = "club2"; Club club3 = new Club(); club3.ClubName = "club3"; db.Clubs.Add(club1); db.Clubs.Add(club2); db.Clubs.Add(club3); int recordsAffected = db.SaveChanges(); } } public static List GetClubs(string clubName) { string connectionstring = "Data Source=.;Initial Catalog=NerdDinners;Integrated Security=True;Connect Timeout=30"; using (var db = new NerdDinners(connectionstring)) { Club club1 = new Club(); Club club2 = new Club(); Club club3 = new Club(); var query = from o in db.Clubs where (p => p.ClubName == "club1") select o; return query.ToList(); } } 

而不是在where (p => p.ClubName == "club1")使用:

 var query = from o in db.Clubs where o.ClubName == "club1" select o; 

可能是你对方法链接感到困惑:

 var query = db.Clubs.Where(p => p.ClubName == "club1"); 
  var query = from o in db.Clubs where o.ClubName == "club1" select o; 

=>语法用于方法链表示法。 您可能还想使用clubName变量而不是"club1"

 var query = db.Clubs.Where (p => p.ClubName == clubName); 

这与此相同(这是您的查询的正确语法):

 var query = from o in db.Clubs where o.ClubName == clubName select o; 
 var query = from o in db.Clubs where o.ClubName == "club1" select o; 

在我尝试的asp mvc Razor中:

 @if (modelItem => item.Id == 1) { Approved } 

无法将lambda表达式转换为类型’bool’,因为它不是委托类型

解:

 @if (Model.FirstOrDefault().Id == 1) { Approved } 

希望帮助某人。