私はちょっと立ち往生しているので、誰かが私を助けてくれることを願っています。Entityフレームワークを使用してLINQ経由で行番号を取得する方法は?
私は、ゲームのヒスコアデータベースの前にサービスを構築しています。アイデアは一度だけ、データベース内の各プレーヤーを持っているし、それらを複数のhiscoreエントリを持って聞かせすることはもちろんである
CREATE TABLE [dbo].[PB_HiscoreEntry] (
[Id] UNIQUEIDENTIFIER NOT NULL,
[PlayerId] UNIQUEIDENTIFIER NOT NULL,
[Score] INT NOT NULL,
[DateCreated] DATETIME NOT NULL
);
CREATE TABLE [dbo].[PB_Player] (
[Id] UNIQUEIDENTIFIER NOT NULL,
[UniquePlayerId] NCHAR (32) NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
[DateCreated] DATETIME NOT NULL
);
:
データベースには、次の2つの表があります。このテーブルのPB_HiscoreEntryには多くのスコアがありますが、単純なOrderByの降順を実行することで、得点の最も高いものが一番下に、一番下が一番低いものを作成することができます。 私の問題は、私のデータベースには、他のスコアと比較してスコアの実際のランクが分からないということです。これは、上記のOrderByクエリを実行するときに行うべきことです。ここで
は、私がアーカイブしたいものをillutrateを助けるためにいくつかのコードです:
var q = (
from he in entities.PB_HiscoreEntry
orderby he.Score descending
select new HiscoreItem()
{
UserId = he.PB_Player.UniquePlayerId,
Username = he.PB_Player.Name,
Score = he.Score,
//Put in the rank, relative to the other entires here
Rank = 1
});
HiscoreItem、私がワイヤ上で送信するために必要なだけの私自身のDTOされます。
誰かが私がこれをどうやってやっているのか、まったく間違っているのですか?
私はあなたの最初の提案を試してみましたが、コンパイル時に、今、このエラーが出る:エラーメソッドの型引数のSystem.Linq.Queryable.Select(System.Linq.IQueryable 、System.Linqの.Expressions.Expression >) 'は使用法から推測できません。型引数を明示的に指定してみてください。 –
Oeps!ごめんなさい。あなたは '彼'を 'エントリー'に置き換えるべきです。私の更新された答えを見てください。 – Steven
私はあなたのAsEnumerable()提案を試してみると、私はこのエラーが発生します: "{"このコマンドに関連付けられている開いているDataReaderが既にありますので、最初に閉じなければなりません "}" –