2011-06-20 123 views
4

LINQ to SQLクエリの出力を元に戻したいとします。 と.Reverse()は機能しません。ただページをクラッシュさせます。LINQ to SQLクエリを逆にする方法

protected void Page_Load(object sender, EventArgs e) 
{ 
    NewsDataContext db = new NewsDataContext(); 
    var News = from news in db.News     
       select new 
       { 
        ID = news.NewsID, 
        kort = news.Short 
       }; 

    foreach (var newa in News) 
    { 
     Panel1. 
     Controls. 
     Add(new LiteralControl(newa.kort + 
           "</br>" + 
           "<a href=Full.aspx?id=" + 
           newa.ID + 
           ">Read The full Article</a>")); 
    } 
} 

別の方法がありますか?

+1

*「....()は動作しません。逆に、単にページがクラッシュします。」* - どのように私たちのクラッシュの原因を言ってはどうですか? 'Reverse()'は動作し、コード内の問題のように聞こえます。 –

+0

それは言った "クエリ演算子 '逆'はサポートされていません。 しかし解決されました –

答えて

6

私は、SQL ServerがT-SQLコマンドに逆変換する方法を知らないと推測しているので、例外が発生しています。クエリの結果をデータベースから取り出して、、次にと逆にする必要があります。

var News = (from news in db.News     
       select new 
       { 
       ID = news.NewsID, 
       kort = news.Short 
       }).AsEnumerable().Reverse(); 
+0

素晴らしいそれを解決しました –

+0

@StriplingWarriorと@ DaveShawの答えは、この質問に対する*一般的な解決策としてはるかに優れています。 –

+0

適切なソート句をクエリに追加することは、特定の問題を解決するための適切な方法です。データベース上でクエリが実行されているとき(リバースが爆発する場所)とメモリ内にあるときに、linqメソッドのすべてに完全にアクセスできることを認識していることを確認してください。 –

13

それはあなたが欲しい順序でのアイテムではなく、データベースのクラスタ化インデックスの逆順を取得するのOrderBy(またはOrderByDescending)を使用していない理由を表示しようとしているニュースがなら。

私はLinq to SqlでReverseを使用する必要があるとは思いません。

例(構文オフの場合であれば申し訳ありませんが、私はラムダのを好む):

var News = 
    (from news in db.News 
    orderby news.Date descending     
    select new 
     { 
       ID = news.NewsID, 
       kort = news.Short 
     }); 
+1

+1メモリ内のソリューション –

+0

すぐに返信してくれてありがとうございました –

+0

別のフィールド(次にDate)を並べ替える必要がある場合は、フィールドをカンマ区切りで区切ります(またはLamdaの場合は「ThenBy」)。 – DaveShaw

5

質問です:あなたは何を逆にしていますか?

SQLストアでは、Newsテーブルに特定の順序が定義されていないため、定義されていない順序でクエリの結果を単純に「逆転」することは意味がありません。

どうやってこのようなことができますか?

var News = from news in db.News  
      order by news.PostedTime descending    
      select new 
      { 
       ID = news.NewsID, 
       kort = news.Short 
      }; 
関連する問題