我有了這個LINQ表達式爲什麼我的linq表達式只在分成兩部分時才起作用?
po_data.POItemQuantiyReceived = NDCEntity.tbl_Ext_Mobile_Receipt_Item.Where(Function(p) po_data.POItems.Select(Function(r) r.UID).ToArray().Contains(p.MobilePOItemUID)).ToArray()
當我運行它,我得到這個錯誤:
LINQ to Entities does not recognize the method 'System.Guid[] ToArray[Guid](System.Collections.Generic.IEnumerable`1[System.Guid])' method, and this method cannot be translated into a store expression.
我採取意味着它遇到了一些麻煩產生陣列OG的GUID我需要做Cntains。但是當我把它分成兩個報表:
Dim test As Guid() = po_data.POItems.Select(Function(r) r.UID).ToArray()
po_data.POItemQuantiyReceived = NDCEntity.tbl_Ext_Mobile_Receipt_Item.Where(Function(p) test.Contains(p.MobilePOItemUID))
它工作正常。這是Linq需要的那些問題之一..嗯,不是一個常數,而是類似的東西?在過去,我遇到了一些情況,我需要將一個變量從一個字典變成一個局部變量,以便LINQ工作。這是這種情況之一嗎?或者有沒有辦法像我想要的那樣在一行中完成這一切。
的原因是,在它發送到數據庫中的表達式必須轉換爲SQL查詢。該錯誤告訴你,如何將ToArray方法轉換爲SQL並不怎麼樣。分割時,第一行的ToArray方法不會發送到數據庫,只有Select方法內的部分是。這種情況下的ToArray發生在客戶端上。 –