0
我的tagNumbers是List<string>
類型。我需要使用數據庫在此List上進行左連接。目前,當我開始在數據庫上進行跟蹤時,我發現儘可能多的查詢被觸發,儘管許多記錄都在這個列表中。另外這個LINQ查詢使用LEFT時給出了一個錯誤JOIN即lj.DefaultIfEmpty()
因爲l.TagId將NULL在LEFT的情況下,JOIN的一些記錄在dbContext和InMemory之間的LINQ中加入連接列表
即 SELECT * FROM tagNumbers LEFT JOIN TagCollections ON.....LEFT JOIN...
from t in tagNumbers
join tc in dbContext.TagCollections on t equals tc.TagNumber into lj
from l in lj.DefaultIfEmpty()
join m in dbContext.MapTagEntities on l.TagId equals m.TagId
select new GetItemByTagnumberResponse
{
//DO SOMETHING
}
- 我應該如何保證無論我的列表多長時間,只有一個查詢會被觸發。
- 我應該如何糾正我的左手從得到一個異常
錯誤 Object reference not set to an instance of an object
上join m in dbContext.MapTagEntities on l.TagId equals m.TagId
l.TagId JOIN,因爲「L」爲空在LEFT的情況下,JOIN,其中連接條件不匹配。
你不能加入內存列表與db表... –
你真的想要一個答案嗎?我敢打賭,沒有人有你的確切模型和數據來測試這個查詢,並自己看到異常。通過瀏覽查詢,它看起來相當不錯,但目前對您的模型沒有了解。 –
@KingKing根據你的評論,我簡化了LINQ查詢。 tagNumbers是我在內存列表中,而另外兩個是數據庫表。我需要獲取所有tagNumbers,而不管我在「SELECT」中的加入。雖然匹配標籤,我也需要相應的數據。 –