我從來沒有找到一個優雅的方式來做到這一點,所以我想知道其他開發人員喜歡什麼方法(爲了性能,可讀性等)。DataTable.Select使用IN運算符
有沒有辦法在DataTable.Select()函數中使用LIKE運算符,基於對另一個DataTable的查詢結果。例如,在SQL Server中,語法爲:
Select SomeValue
From Table1
WHERE MyField IN
(Select SomeField From Table2 Where SomeColumn = SomeFilterVariable)
我知道,從編碼的角度看,這是一個非常簡單的查詢做對DB,但這是一個應用程序正在做那裏做由於計算涉及的次數多,這種方式會導致成千上萬次對服務器的調用。我已經計算了它,並且一次獲取所有數據並使用DataTable.Select()或DataTable.Compute()來獲得我需要的結果會更好。
我對任何包括LINQ到數據集等都是開放的。我真正需要避免的是到服務器的很多次旅行。
但是,這將轉到服務器來執行此操作,對嗎?我特別注意避免前往數據庫服務器,並首先獲取數據(整個表),然後針對內存中的DataTable(DataSet的一部分)執行類似的查詢。儘管我會爲此選擇一個好的Linq語法,我可以在另一個DB往返性能損失並不那麼可怕的情況下使用。 – David 2010-07-28 17:22:47
如果集合(db.Table1&db.Table2)是Table實體,它將轉到數據庫。如果他們是regaulr收集,它會在記憶中工作。語法應該保持不變。 – 2010-07-28 18:00:34
你是對的...謝謝。 – David 2010-07-29 15:27:50