基本上,我试图将一组值返回给GridView,它不符合数组中的任何值。但是,在尝试我得到
的错误LINQ to Entities无法识别方法' Int32 ToInt32(布尔)'方法,并且此方法无法转换为商店表达式。
这是我的代码:
deleteObject
任何想法我做错了什么?
答案 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();
}