Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC3:从MVC视图应用SELECT/WHERE语句_C#_Asp.net Mvc 3_View - Fatal编程技术网

C# ASP.NET MVC3:从MVC视图应用SELECT/WHERE语句

C# ASP.NET MVC3:从MVC视图应用SELECT/WHERE语句,c#,asp.net-mvc-3,view,C#,Asp.net Mvc 3,View,我有viewbagviewbag.RoomBooks中包含的项目列表 例如: 我想要所有带有ViewBag.Roombookings.RoomNo=6和ViewBag.Roombookings.Time

我有viewbag
viewbag.RoomBooks中包含的项目列表

例如:

我想要所有带有
ViewBag.Roombookings.RoomNo=6和ViewBag.Roombookings.Time
循环通过是不行的

而且必须在视图上完成,因为我还需要访问所有其他房间预订以填充时间表

或者,我在想哈希表?在那里我可以列出它与RoomNo,时间和访问它的方式。但如果可能的话,我找不到任何关于这方面的好文件

我尝试了一些方法(只是为了测试一种有效的方法(这些方法不会遵循与上面相同的标准)):

var RoomBookingsTemp=ViewBag.RoomBookings;
var newlist=(来自RoomBookingsTemp中的RoomOcc,其中RoomOcc.EndDateTimeDateCheckStartroombooking.StartDateTime&&roombooking.RoomNo==RoomNo);
var newlist=RoomBookingsTemp.Select(m=>m[“RentalNo”]);

但是没有一个是有效的。

第二种方法有什么问题?您只是缺少选择

// Some statements removed from where for clarity
var bookings = RoomBookingsTemp.Where(rb => rb.RoomNo == 6).Select(rb => rb);

您需要强制转换RoomBookingsTemp变量。当您直接从ViewBag声明它时,它仍然是一个动态类型,您看到的错误是linq不能查询/迭代动态类型

我不确定你实际使用的是哪种类型,但试试这样的

var RoomBookingsTemp = ViewBag.RoomBookings as List<RoomBooking>;

var RoomBookingsTemp=ViewBag.RoomBookings作为列表;

List RoomBookingsTemp=ViewBag.RoomBookings;

我认为您建议的linq方法可以实现您正在尝试的目标。你能说明是什么让你说它无效吗?在控制器中可以正常工作,但在视图中不行。如果linq是第一个,则“不允许源类型“dynamic”上的查询表达式”。其他2给出了“如果不首先将lambda表达式强制转换为委托或表达式树类型,则无法将lambda表达式用作动态调度操作的参数”,引用了您的问题中的一些令人担忧的短语:
我在viewbag和
中包含了项目列表,并且必须在视图上执行该操作。对我来说,使用ViewData/ViewBag和在视图中编写复杂的代码是两种非常糟糕的做法。视图用于表示,不应包含逻辑。在控制器中创建所需的结构,并将其显示在视图中“如果不首先将lambda表达式强制转换为委托或表达式树类型,则无法将lambda表达式用作动态调度操作的参数”您能否显示从ViewBag声明RoomBookingsTemp的代码。
var RoomBookingsTemp=ViewBag.RoomBookings
这是因为ViewBag是动态的。使用静态类型的视图模型(我强烈推荐)或尝试:List RoomBookingsTemp=ViewBag.RoomBookings;//假设ViewBag.RoomBookings是一个RoomBookings列表,我发誓我试过了。再想一想,也许我忽略了一个事实,那就是它是一个自定义对象列表。干杯
var RoomBookingsTemp = ViewBag.RoomBookings as List<RoomBooking>;
List<RoomBooking> RoomBookingsTemp = ViewBag.RoomBookings;