我有一個名爲DataList
的數據列表。 DataList
有id
和UpdatedTime
等字段。另一方面,我只有id
及其各自的價值UpdatedTime
的字典。 有什麼辦法來過濾DataList,使其滿足字典itemIdAndUpdatedTimeFilter
項目Id和他們各自的UpdatedTime
高於DataList
的UpdatedTime
?在LINQ中使用字典Where子句
Dictionary<int, DateTime> itemIdAndUpdatedTimeFilter = getFilter();
itemIdAndUpdatedTimeFilter.Add(1, dateA);
itemIdAndUpdatedTimeFilter.Add(2, dateB);
itemIdAndUpdatedTimeFilter.Add(3, dateC);
var dataList = getData();
var filtered = dataList.Where(d=>itemIdAndUpdatedTimeFilter.ContainsKey(d.Id) && itemIdAndUpdatedTimeFilter[d.Id] < d.UpdatedTime)
以上LINQ語句如下異常結束:
LINQ to實體不能識別方法「布爾 的containsKey(Int32)已」的方法,而這種方法不能被翻譯成 一個商店表達。
試圖刪除ContainKey
條件和獲得,而不是執行以下操作:
LINQ到實體無法識別方法「的System.DateTime get_Item(Int32)已」的方法,而這種方法不能被翻譯成一個 存儲表達式。
所需的查詢是這樣的:
SELECT FROM dataList
WHERE (dataList.UpdatedTime < dateA AND dataList.Id = 1)
OR (dataList.UpdatedTime < dateB AND dataList.Id = 2)
OR (dataList.UpdatedTime < dateC AND dataList.Id = 3)
您不能使用字典過濾數據庫表,該表不能轉換爲SQL存儲庫表達式。或者是示例sql只是內存過濾器的可比語法? – Igor
@Igor我明白了,謝謝 –