针对DataTable的动态LINQ查询

时间:2017-06-26 19:23:29

标签: c# sql linq dynamic

我想在DataTable中的SQL表中汇总数据,以便在DataGridView中显示。我想用LINQ来查询表。

此SQL查询生成摘要:

lParam

我尝试使用System.Linq.Dynamic包但它似乎已过时。尝试了System.Linq.Dynamic.Core包但找不到任何文档。问题是我在编译时不知道SELECT语句中的哪些字段会导致无法使用类型化的LINQ查询。

我可以使用动态SQL,但想使用LINQ。有没有一个像样的库,或者我最好坚持使用SQL?

1 个答案:

答案 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(事实上它会使其更复杂)。