-2

私はこのようなSQLクエリを持っています:

  select top 1 Newsletter_HTML_Tag  from Newsletter_TBL
     where (Newsletter_Category_ID=1)
     order by Creation_Date desc

Newsletter_TBLまた、 namedからのすべてのレコードのリストを取得するメソッドもあります。

ニュースレターGellAll()

以前に試してみましたが、うまくいきません:

NewsletterGellAll()
   .FirstOrDefault(c => c.NEWSLETTER_CATEGORY_ID == 1)
   .orderby(a => a.Creation_Date)

どうすれば修正できますか?

4

4 に答える 4

0

条件が満たされないことが確実でない場合は、常に First または Default を使用することをお勧めします。これは、null ケースも処理するためです。レコードがない場合 (特定の条件付き) を意味します。

日付への順序にも依存します。ここでは、日付が昇順であることを考慮してください (古い日付が最初)。

NewsletterGellAll().Where(c=>c.NEWSLETTER_CATEGORY_ID==1)
                    .OrderBy(a=>a.Creation_Date)
                    .FirstOrDefault();
于 2014-03-03T10:50:18.570 に答える
0

SQL クエリの結果をレプリケートする場合は、OrderByDescending代わりに使用する必要があります。OrderBy

さらに、クエリを見ると:

NewsletterGetAll()
.FirstOrDefault(c => c.NEWSLETTER_CATEGORY_ID == 1)
.OrderBy(a => a.Creation_Date)

SQL ではORDER BY、式の前に評価されるため、これは問題ありませんTOP。ただし、Linq では、カテゴリに一致する最初のレコードを取得し、その 1 つのレコードを並べ替えます。したがって、これはビルドさえできず、単一のアイテムを並べ替えることができません。

したがって、それは

NewsletterGetAll()
.Where(c => c.NEWSLETTER_CATEGORY_ID == 1)
.OrderByDescending(c => c.Creation_Date)
.FirstOrDefault();
于 2014-03-03T10:40:36.877 に答える
0

最初に cat==1 ですべてのアイテムをクエリし、最初のアイテムを取得するように並べ替えます

NewsletterGellAll().Where(c=>c.NEWSLETTER_CATEGORY_ID==1)
                   .OrderBy(a=>a.Creation_Date)
                   .First();
于 2014-03-03T10:35:44.567 に答える
0

LINQPad を使用して、プロフェッショナルな LINQ および SQL クエリを作成します。リンクパッドはこちら

于 2014-03-03T11:07:11.980 に答える