1

我是 ASP.NET 新手,对语法有一些疑问...我有几个 SQL DB 表,其中包含有关ride_reservations、车辆和管理选项的信息。这是一个 asp.net 程序功能,它将选择下一个最佳乘车预订发送到特定车辆。

我试图通过使用数据库中位于两个有效日期之一的游乐设施填充 C# ArrayList 来开始(并找出语法),首先按最旧的调用排序。

提前致谢!

**编辑:另一个问题是“TimeOfCall”数据库列是“datetime2(7)”类型,而 ValidDate1/2 数据库列是“日期”类型...我可以比较这些吗?

有一些语法帮助:下面:我更接近但收到以下运行时错误:

序列不包含任何元素

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

Exception Details: System.InvalidOperationException: Sequence contains no elements

Source Error: 


Line 27:         protected void getAllRides()
Line 28:         {
Line 29:             using (RamRideOpsEntities myEntities = new RamRideOpsEntities())
Line 30:             {
Line 31:                 var adminOptions = (from a in myEntities.AdminOptions

Source File: D:\DOCUMENTS\RamRide\RamRideOps_PL\RamRideOps\RamRideOps\Ops\DispatchCar.aspx.cs    Line: 29 

Stack Trace: 


[InvalidOperationException: Sequence contains no elements]
   System.Linq.Enumerable.First(IEnumerable`1 source) +336
   System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__0(IEnumerable`1 sequence) +41
   System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable`1 query, Expression queryRoot) +59
   System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression) +150
   System.Linq.Queryable.First(IQueryable`1 source) +265
   RamRideOps.DispatchCar.getNextRide(Int32 carNum) in D:\DOCUMENTS\RamRide\RamRideOps_PL\RamRideOps\RamRideOps\Ops\DispatchCar.aspx.cs:29
   RamRideOps.DispatchCar.Page_Load(Object sender, EventArgs e) in D:\DOCUMENTS\RamRide\RamRideOps_PL\RamRideOps\RamRideOps\Ops\DispatchCar.aspx.cs:24
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +91
   System.Web.UI.Control.LoadRecursive() +74
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272

在此处输入图像描述

4

1 回答 1

1

validDate1 和 validDate2 都将是 Queryable AdminOptions

你可能想要这个

var adminOptions = (from a in myEntities.AdminOptions
                             select new { a.ValidDate1, a.ValidDate2 }).First();

假设带有字段 ValidDate1 和 ValidDate2 的表(不是带有键和值的 propertyBag 样式)

现在你可以像这样乘坐你的游乐设施

var rides = (from r in myEntities.Rides
                           where (r.TimeOfCall == adminOptions.ValidDate1 || 
                                  r.TimeOfCall == adminOptions.ValidDate2)
                           orderby TimeOfCall descending
                           select r).ToList();

ToList() 将避免在最后执行循环来构建数组。

那应该几乎可以解决您的语法问题。

编辑

我错过了将 r 放入 TimeOfCall 的 orderby 行

var rides = (from r in myEntities.Rides
                           where (r.TimeOfCall == adminOptions.ValidDate1 || 
                                  r.TimeOfCall == adminOptions.ValidDate2)
                           orderby r.TimeOfCall descending
                           select r).ToList();

我认为你真的需要看看在这个地方做一些教程,或者买一本关于这个主题的好书。一个下午的阅读可能会为您节省很多挫败感。

于 2012-01-16T20:31:41.390 回答