问题描述
我不认为我必须像这些语句一样嵌套LINQ,因为分区不使用嵌套的密集列,但是我不确定这是否正确。
我的计划是根据每个单独的密集列语句在C#中创建新列。例如,dt [“ L”]将等于以下LINQ。但是我无法弄清楚LINQ应该是什么,以及是否可以破坏此嵌套。
示例片段:
"DENSE_RANK () OVER (PARTITION BY a0.[C],a0.[G] ORDER BY a0.[J] DESC) AS [L]"
"...WHERE [L] = 1 "
var res = from element in dt.AsEnumerable()
.GroupBy(x => new { C = x["C"],G = x["G"] })
.Select( x => x)
.OrderByDescending(x => x["J"]).First();
完整的sql:
SELECT /*L3*/ disTINCT
[A] AS [A],[B] AS [B],[C] AS [C],[D] AS [D],[E] AS [E],[F] AS [F],[G] AS [G],[H] AS [H],[I] AS [I],[J] AS [J],[K] AS [K]
FROM
(
SELECT /*L2*/
[A] AS [A],[K] AS [K],[L] AS [L],[M] AS [M],DENSE_RANK () OVER (PARTITION BY [C],[D],[E],[K] ORDER BY [H] DESC) AS [N]
FROM
(
SELECT /*L1*/
[A] AS [A],DENSE_RANK () OVER (PARTITION BY [C],[G] ORDER BY [K] DESC) AS [M]
FROM
(
SELECT /*L0*/
a0.[A] AS [A],a0.[B] AS [B],a0.[C] AS [C],a0.[D] AS [D],a0.[E] AS [E],DENSE_RANK () OVER (PARTITION BY a0.[C],a0.[D] ORDER BY a0.[E] ASC) AS [F],a0.[G] AS [G],a0.[H] AS [H],a0.[I] AS [I],a0.[J] AS [J],a0.[K] AS [K],DENSE_RANK () OVER (PARTITION BY a0.[C],a0.[G] ORDER BY a0.[J] DESC) AS [L]
FROM
[table] a0
) t /*L0*/
WHERE
[L] = 1
) t /*L1*/
WHERE
[M] = 1
) t /*L2*/
WHERE
[N] = 1
ORDER BY
[K] Desc
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)