0

日時を取得するためにlinqに苦労しています。

レコードが現在の日付よりも小さい場合、情報を取得しようとしています

コードは次のとおりです。

public ActionResult _Events()
{
          DateTime dt = DateTime.Now.Date;
          var   DocsFirst =(from t in db.tble_presentation
                            where dt >=  EntityFunctions.TruncateTime(t.presentation_date)
                             select t).OrderByDescending(t => t.presentation_date).Take(2);

            return PartialView(new Newsmodel
            {
               DocsList_list1 = DocsFirst,
            });
}

しかし、私はこの次のエラーが発生します

タイプ 'System.Linq.IQueryable' を 'System.Linq.IOrderedEnumerable' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)

前もって感謝します

4

1 に答える 1

2

DocsList_List1タイプのように見えますIOrderedEnumerable(@Emreがコメントで指摘しているように)。コードをコンパイルするには、 の宣言をDocsList_list1互換性のある型 (おそらくIEnumerable) に変更するか、linq クエリの結果を にする必要がありますIOrderedEnumerable。後者を行う(やや醜い)方法:

var DocsFirst = (from t in db.tble_presentation
                 where dt >=  EntityFunctions.TruncateTime(t.presentation_date)
                 select t).Take(2).AsEnumerable()
                 .OrderByDescending(t => t.presentation_date);

Take(2)データベースに順序付けさせるのではなくメモリ内で順序付けを行うため、やや醜いですが、 の前に配置され ているため、要求された 2 つの要素しか読み取れませんAsEnumerable()

于 2013-05-12T18:43:56.777 に答える