LINQ:ASP.NET EntityDataSource初学者的语法

时间:2012-01-16 05:41:55

标签: c# asp.net sql linq-to-sql entitydatasource

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

我试图通过在数据库中填充C#ArrayList来开始(并弄清楚语法)两个有效日期之一,按照最早的调用排序。

提前致谢!

**编辑:还另一个问题是,“TIMEOFCALL”分贝列是一个“DATETIME2(7)”类型和ValidDate1 / 2分贝colums是类型“日期” ...我可以比较这些

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

序列不包含元素

描述:执行当前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

enter image description here

1 个答案:

答案 0 :(得分:1)

validDate1和validDate2都是Queryable AdminOptions

你可能想要这个

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

假设表格包含字段ValidDate1&amp; 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()将避免在结束时进行循环以构建数组。

这应该可以修复你的语法。

编辑

我错过了将timeOfCall中的r放在orderby行

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

我认为你真的需要看一下这个地方的一些教程,或者买一本关于这个主题的好书。一个下午的阅读可能会让你感到沮丧。