2010-11-25 9 views
0

私は非常にシンプルに見えるものの、まだ動作していないものに対してメルトダウンしています。ここに私のシナリオがあります。子エンティティセットのプロパティを使用してLINQクエリを実行します。

私は、コンサートの実行のようなイベントのプロパティを含むtEventsのオブジェクト構造を持っています。 tEventsには、EventDate、Canceledなどのプロパティを含むtEventOptionsのエンティティセットが含まれています。たとえば、日付によるフィルタリングなど、tEventOptionsのプロパティを使用してtEventsのリストを照会したいと思います。

私のページは、カレンダーオブジェクトを使用してイベントの日付を表示しています。だから、データベースから戻って来るList内のtEventがカレンダーコントロールでレンダリングされている日の要素の日付と一致するかどうかを調べようとしています(このsnip 'data'はListでdbクエリの結果です):

protected void CalendarDayRender(object sender, DayRenderEventArgs e){ 
    //need to see if we can find a way to find an event option that might be contained within the events datasource 
    var r =(from x in data where x.tEventOptions.Select(y=>y.EventDate.Date.Equals(e.Day.Date)).Any() select x).Any(); 
    if (r) 
    { 
     e.Cell.Font.Bold = true; 
     } 
} 

DayRenderEventArgsの日付に一致するEventDateを持つtEventOptionを持つtEventがある場合はtrueになる必要があります。 'EventDate'は日時フィールドなので、日付部分のみを 'e.Day.Date'と比較することにします。私の考えは、tEventOptionsのクエリのAny()を取ると、条件に一致する要素があるかどうかのブール値が返されます。

rを除いて、クエリ結果varは、受信するデータに関係なく常にtrueです。私はtEventOptionの他のプロパティを使用してサブクエリを試し、同じ '真の'結果を毎回得るようになりました。データにはこの結果が反映されていないことがわかっているので、クエリの構造に問題があることは明らかですが、私の人生にとっては解決方法を見つけることができません。

私はこのタイプの質問に以前から苦労していましたので、どんな助けも非常に感謝して受け取ります。

答えて

0

この

e.Cell.Font.Bold = data 
         .Where(x => x.tEventOptions 
          .Any(o => o.EventDate.Date == e.Day.Date)); 
を試してみてください
関連する問題