簡體   English   中英

針對數據表的動態LINQ查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM