相关疑难解决方法(0)

Linq中的Row_number(分区xxx)?

我有一个DataTable具有这种结构和数据:

id |   inst   |   name
------------------------
 1 |  guitar  |  john
 2 |  guitar  |  george
 3 |  guitar  |  paul
 4 |  drums   |  ringo
 5 |  drums   |  pete

我可以检索这样的记录:

IEnumerable <Beatle>...

class Beatle
{
  int id;
  string inst;
  string name;
}
Run Code Online (Sandbox Code Playgroud)

我想获得那些演奏不同乐器的人的内部秩序.在MSSQL我会用

SELECT 
    *
    ,Row_Number() OVER (PARTITION BY inst ORDER BY id) AS rn
FROM Beatles
Run Code Online (Sandbox Code Playgroud)

此查询返回

id |   inst   |   name  | rn
-----------------------------
 1 |  guitar  |  john   | 1
 2 | …

c# linq .net-4.0

36
推荐指数
3
解决办法
3万
查看次数

如何将行号投射到Linq查询结果中

如何将行号投影到linq查询结果集上.

而不是说:

field1,field2,field3

field1,field2,field3

我想要:

1,field1,field2,field3

2,field1,field2,field3

以下是我对此的尝试:

public List<ScoreWithRank> GetHighScoresWithRank(string gameId, int count)
{
    Guid guid = new Guid(gameId);
    using (PPGEntities entities = new PPGEntities())
    {
        int i = 1;
        var query = from s in entities.Scores
                    where s.Game.Id == guid
                    orderby s.PlayerScore descending
                    select new ScoreWithRank()
                    {
                        Rank=i++,
                        PlayerName = s.PlayerName,
                        PlayerScore = s.PlayerScore
                    };
        return query.ToList<ScoreWithRank>();
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,"Rank = i ++"行引发了以下编译时异常:

"表达式树可能不包含赋值运算符"

linq row-number

34
推荐指数
1
解决办法
4万
查看次数

标签 统计

linq ×2

.net-4.0 ×1

c# ×1

row-number ×1