我想在DataTable中的SQL表中汇总数据,以便在DataGridView中显示。我想用LINQ来查询表。
此SQL查询生成摘要:
lParam
我尝试使用System.Linq.Dynamic包但它似乎已过时。尝试了System.Linq.Dynamic.Core包但找不到任何文档。问题是我在编译时不知道SELECT语句中的哪些字段会导致无法使用类型化的LINQ查询。
我可以使用动态SQL,但想使用LINQ。有没有一个像样的库,或者我最好坚持使用SQL?
答案 0 :(得分:0)
我不明白为什么CTE是必要的;你可以将SQL表示为
SELECT szSymbol, dtFwdDate, sum(fQuantity)
FROM vw_Trades
WHERE NOT (dtExpDate < GETDATE())
GROUP BY szSymbol, dtFwdDate
HAVING SUM(fQuantity) <> 0
ORDER BY szSymbol, dtFwdDate
Linq等价物将是:
from t in vw_Trades
where dtExpDate >= DateTime.Now
group by new { szSymbol, dtFwdDate } into g
select new {szSymbol, dtFwdDate, quantity = g.Sum(i => i.fQuantity) }
where quantity <> 0
请注意,您可以直接从查询中提取DataGridView
- 无需使用DataTable
(事实上它会使其更复杂)。