2012-01-16 19 views
1

私はASP.NETを初めて使い、構文についていくつか質問があります。 私はride_reservations、vehicles、およびadminオプションに関する情報を保持するSQL DBテーブルをいくつか持っています。これは、特定の車両に送るために次の最良の乗車予約を選択するasp.netプログラム機能用です。LINQ:初心者の構文ASP.NET EntityDataSource

私が最初に最も古いコールによってソートされた2つの有効な日付の1にあるDB内の乗り物とC#のArrayListのを、取り込むことから始め(と構文を把握)しようとしています。

ありがとうございます!

**編集:また、 'TimeOfCall' db列が 'datetime2(7)'型であり、ValidDate1/2 db列が型 '日付' ...これらを比較できますか?いくつかの構文の助けを借りて

:以下:私は近づいていますが、次のランタイムエラーを取得しています:

シーケンスに要素が含まれていない

説明:未処理の例外が現在の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

validDate1とvalidDate2は、両方のあなたは、おそらくこの

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

がフィールドValidDate1 & ValidDate2キーと(ないpropertyBagスタイルで表を仮定したい照会可能AdminOptions

となり、値)

今、あなたはこの

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

ToListメソッド(のようなあなたの乗り物を取得することができます)は、アレイを構築するために最後にループを実行する必要性を回避します。

あなたの構文を修正する必要があります。私は、私はあなたが本当に場所の周りのチュートリアルのいくつかをやって見てする必要がある、または購入を考えるORDERBYライン

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

にTIMEOFCALLにRを入れ逃し

EDIT

主題に関する良い本。読書の午後は、あなたに一束の欲求不満を救うかもしれません。

+0

恐ろしい、ありがとう!残された唯一の奇妙なことは、それが「TIMEOFCALLは現在のコンテキスト内に存在しない」ということ...「ORDERBY」ステートメントを参照...わからない、それが唯一の「TIMEOFCALL」の1つを使用して問題を抱えている理由を教えてくれていることです他のものではありません。存在するはずです。何かご意見は? – SHeinema

+0

ダン、私はまだ問題を持っているようにも、それは私がORDERBY文を削除しても、私は(おそらく関連?)ランタイムエラーを取得し、検索します:何も最初から戻って来ていないので(エラーが^の上に追加) – SHeinema

+0

それランタイムエラーがありますクエリ。私は、AdminOptionsテーブルの構造を推測しました。私はそれであなたを助けることができる前に、あなたは、その構造について非常に明確にする必要があります。 – Peter