2016-09-25 12 views
0

1つのLINQクエリのみを使用して複数の条件に基づいて単一のテーブルから複数の値を取得したいとします。同じテーブルから複数の異なる値を取得するLINQ

ArticleId (int) 
ArticleName (string) 
CreatedDate (datetime) 
ArticleType (string) 
Views (int) 

私が取得したい:

  1. トップ5最近作成した記事、
  2. 最大ビューのトップ5記事、
  3. トップArticleType =「ニュースとの5の記事私のテーブルは次のようになります"

LINQクエリを1つだけ使用します。 私はこれらのことを学ぶことに新しいので、これが可能かどうかは分かりません。これが愚かな質問であれば私を許してください。どのボディでもLINQのメソッド構文で答えてください。任意のヘルプはappriciatedです。

答えて

0

私は

トップ5最近作成した記事 (シングルが読み取り可能ではないだろうと私はあなたが1を望む理由を参照いけないので)メソッドの構文に答えることになるだろう、と複数のクエリでよarticles.OrderByDescending(a => a.CreatedDate).Take(5);

最大景色をトップ5の記事 articles.OrderByDescending(a => a.Views).Take(5);

トップArticleType =と5記事「ニュース」 ここでトップを定義する方法がわからない、しかし、あなたは空白を埋めることができます。

articles. Where(a => a.ArticleType == "News").OrderBy(...).Take(5);

+0

は、返信していただきありがとうございます。上記のことを1つのクエリで実行したいという理由は、この情報をすべて取得するためのデータベースへの単一のトリップしかないからです。私は単一のクエリでこれを行うために探していた。とにかく助けてくれてありがとう。 –

+0

コレクション全体をさまざまな方法で注文するので、少し難しいです。これを行う唯一の方法は、コレクション全体をプログラムメモリに読み込んで、上で書いたことをすることですが、それは一般的に悪い考えです。 – eavidan

+0

はいu r右@eavidan。私はまた、同じアプローチを最初から考えました。レコードの数が1000sになると、クエリは実際には重くなります。ありがとうございました。 –

関連する問題