2009-07-15 9 views

答えて

12

結果:あなたは10行たい場合例えば

、の。クエリ全体をクライアントに引き渡す必要があり、そこから行番号に投影することができます。別の方法として、ROW_NUMBERを使用するストアドプロシージャを作成し、そのプロシージャをLinqからSQLにヒットさせることもできます。

あなたのケースでは、これを実行できる唯一の方法はクライアント側です。次のステートメントはサーバーでこれを行うつもりはないが、テーブル全体をプルダウンしてクライアントでインデックスを取得することに注意してください。

using (var dc = new DataClasses1DataContext()) 
{ 
    var result = dc.Users 
     .AsEnumerable()  // select all users from the database and bring them back to the client 
     .Select((user, index) => new // project in the index 
     { 
      user.Username, 
      index 
     }) 
     .Where(user => user.Username == "sivey"); // filter for your specific record 

    foreach (var item in result) 
    { 
     Console.WriteLine(string.Format("{0}:{1}", item.index, item.Username)); 
    } 
} 
+0

ありがとう、スコット。だから、あなたはToList()、そしてIndexOf()を使うだろうと思いますか? –

+0

確かに、私はまたあなたにインデックスを与えるSelectのオーバーロードでそれを行う方法の例を追加しました。 –

+0

甘い。私のupvoteを取得します。 –

3

これを実行するには、Skip and Take拡張メソッドを使用できるはずです。

from c in customers 
      where c.Region == "somewhere" 
      orderby c.CustomerName 
      select new {c.CustomerID, c.CustomerName} 
      .Skip(9).Take(1); 
+3

これは答えではないと思います尋ねられている質問ですが、それはupvotedので、私はここでそれを残しています。 –

1

LINQの問合せに行番号を投影する方法を私は承知していること、これを行うための直接的な方法はありません
How To Project a Line Number Into Linq Query Results

+3

SelectのオーバーロードはLinq to SQLではサポートされていません。 NotSupportedException()をスローします。 –