LINQ to Entities无法识别方法' Int32 ToInt32(布尔)'

时间:2015-05-03 14:37:48

标签: c# asp.net linq entity-framework

基本上,我试图将一组值返回给GridView,它不符合数组中的任何值。但是,在尝试我得到

的错误
  

LINQ to Entities无法识别方法' Int32 ToInt32(布尔)'方法,并且此方法无法转换为商店表达式。

这是我的代码:

deleteObject

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

注意:“bookings.Any()”将返回true或false,指示预订数组中是否有任何元素。您收到此错误是因为您尝试将表达式为“bookings.Any()”的布尔值转换为整数。

如果您要做的是让所有房间都没有预订,那么我会推荐

      if(bookings.Any()){
       return (from b in context.Room
            where !bookings.contains(b.roomId)  
            select b).ToList();
       }else{

       return (from b in context.Room  
            select b).ToList();
      }

含义:如果我们预订了任何房间,请选择那些未预订的房间,否则选择所有房间(因为没有预订房间)

注意:如果您需要进行类型转换,请在链接外部进行转换,并在链接语句中使用结果。由于这是C#,我不认为你在这里有类型转换的任何问题。 你的“预订[i] = booktypes.RoomId;”应该返回一个int数组,它不需要转换,即“Convert.ToInt32”,但如果需要进行这种转换,请在你之前做到这一点,即

    if(bookings.Any()){
       var thebooking = new List<int>();
     foreach (var booking in bookings)
    {
       thebooking.Add(Convert.ToInt32(booking));
     }

       return (from b in context.Room
            where !thebooking.contains(b.roomId)  
            select b).ToList();
       }else{

       return (from b in context.Room  
            select b).ToList();
      }