使用“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) {
}
无法将lambda表达式转换为类型’bool’,因为它不是委托类型
解:
@if (Model.FirstOrDefault().Id == 1) {
}
希望帮助某人。