2

我有如下所示的实体框架代码。在 where 条件下出现以下错误。

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

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

    static void Main(string[] args)
    {

        ClubCreation();
        List<Club> 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<Club> 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();





        }
    }
4

5 回答 5

8

而不是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");
于 2012-07-25T07:54:01.737 回答
1

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

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

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

var query = from o in db.Clubs
            where o.ClubName == clubName
            select o;
于 2012-07-25T07:55:55.603 回答
1
        var query = from o in db.Clubs
                    where o.ClubName == "club1"
                    select o;
于 2012-07-25T07:54:17.567 回答
1

在我尝试的时候在 asp mvc Razor 中:

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

<span class="badge progressbar-success">Approved</span> 

 }

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

解决方案:

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

<span class="badge progress-bar-success">Approved</span>

}

希望能帮助某人。

于 2016-01-21T10:46:25.287 回答
0
var query = from o in db.Clubs
            where o.ClubName == "club1"
            select o;
于 2012-07-25T07:55:17.303 回答