我有一个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 | …
如何将行号投影到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 ++"行引发了以下编译时异常:
"表达式树可能不包含赋值运算符"