我需要为每一行指定行索引(带有Linq2db的MySQL5.7)。
如何构建一个查询,比如
SELECT `t`.*, @n:=@n+1 as rank FROM ('some query') `t`, (SELECT @n := 0) `rowcounter`或者我怎样才能用另一种方式来做呢?
发布于 2018-06-21 07:38:45
我们开始吧
[Sql.Expression("@n:=@n+1", ServerSideOnly = true)]
static int IncrementIndex()
{
throw new NotImplementedException();
}
[Test, MySqlDataContext]
public void RowIndexTest(string context)
{
using (var db = GetDataContext(context))
{
db.NextQueryHints.Add(", (SELECT @n := 0) `rowcounter`");
var q =
from p in db.Person
select new
{
rank = IncrementIndex(),
id = p.ID
};
var list = q.ToList();
}
}另外,不要忘记将Allow User Variables=True;添加到您的连接字符串中。
发布于 2018-06-15 06:53:44
没有一种特殊的LINQ方法可以从SQL查询中获取行索引,但是在将SQL数据放入客户端之后,您可以在查询上获取索引。
var ans = someQuery.AsEnumerable().Select((t, rank) => new { t, rank });https://stackoverflow.com/questions/50858172
复制相似问题