[英]Dynamic LINQ query against DataTable
我想總結一下DataTable中SQL表中的數據,以便在DataGridView中顯示。 我想使用LINQ查詢表。
此SQL查詢生成摘要:
;WITH CTE AS (
SELECT * FROM vw_Trades WHERE NOT (dtExpDate < GETDATE())
)
SELECT szSymbol, dtFwdDate, sum(fQuantity)
FROM CTE GROUP BY szSymbol, dtFwdDate
HAVING SUM(fQuantity) <> 0
ORDER BY szSymbol, dtFwdDate
GO
我嘗試使用System.Linq.Dynamic程序包,但它似乎已過時。 嘗試使用System.Linq.Dynamic.Core程序包,但找不到任何文檔。 問題是,我在編譯時不知道SELECT語句中將包含哪些字段,這使得無法使用類型化的LINQ查詢。
我可以使用動態SQL,但想使用LINQ。 是否有一個像樣的庫呢?還是我最好還是堅持使用SQL?
我不明白為什么需要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
(事實上,這會使它變得更加復雜)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.