2017-02-17 10 views
-3

enter image description here LINQでテーブル内のユーザのランクを取得するにはどうすればよいですか?我々は、ランキング(行番号)を取得することができますどのようにユーザーのスコアによって注文後、私たちのテーブルでこれらのフィールドLINQでユーザの階を見つける

[ID、名前、スコア]

を持っている場合、私は1つのVB.NET CODE

を使用します私たちの質問の中でそれらの?

+3

LING?素晴らしいですね。私はそれのボックスを取得したい – Plutonix

+0

あなたはLINQを使用しません。 – jmcilhinney

+0

同じスコアの2つのレコードがある場合、どのようにスコアが決定されますか?あなたの例では、同じスコア "7"の '' A1 "'& '' A7 "'を持っていますが、 '' A1''は '3'と' 'A7''のランク4です。システムは両方とも「3」を共有し、順位は次のもののために直ちに「5」にスキップする。どのようにしたいのですか? – Enigmativity

答えて

0

ありがとうございます。私は怒鳴るコードを使用し、それは私のために仕事の罰金です:ここで

 Dim query = (From P In DB.tblUserScores Order By P.Score 
              Descending Select P).AsEnumerable() 

     Dim Rank As Integer = 1 
     For Each userObj As tblUserScore In query 
      If userObj.DeviceId = DeviceID Then Exit For 
      Rank += 1 
     Next 
+0

はい、それは良い方法ですが、私はそれがランク= 5を返すべきだと思います(A1とA7の両方に7スコアがあるので)どのようにこの問題を解決できますか?ありがとう – Ali

0

方法は次のとおりです。

Dim records = _ 
{ _ 
    New With { Key .ID = 1, Key .Name = "A1", Key .Score = 7 }, _ 
    New With { Key .ID = 2, Key .Name = "A2", Key .Score = 9 }, _ 
    New With { Key .ID = 3, Key .Name = "A3", Key .Score = 2 }, _ 
    New With { Key .ID = 4, Key .Name = "A4", Key .Score = 1 }, _ 
    New With { Key .ID = 5, Key .Name = "A5", Key .Score = 6 }, _ 
    New With { Key .ID = 6, Key .Name = "A6", Key .Score = 4 }, _ 
    New With { Key .ID = 7, Key .Name = "A7", Key .Score = 7 }, _ 
    New With { Key .ID = 8, Key .Name = "A8", Key .Score = 3 }, _ 
    New With { Key .ID = 9, Key .Name = "A9", Key .Score = 5 }, _ 
    New With { Key .ID = 10, Key .Name = "A10", Key .Score = 8 } _ 
} 

Dim query = _ 
    From r In Records _ 
    Order By r.Name Ascending 
    Order By r.Score Descending 
    Select r 

query.Dump() 

Dim rank = _ 
    query _ 
     .Select(Function (x, n) New With { Key .Record = x, Key .Rank = n + 1 }) _ 
     .ToDictionary(Function (x) x.Record.Name, Function (x) x.Rank) 

Dim name = "A9" 
Console.WriteLine("User " & name & "'s Rank is " & rank(name)) 

が私に与えること:

 
User A9's Rank is 6 
関連する問題