0
在我的ASP.NET MVC 5項目中,我想採用LINQ-to-SQL查詢結果並將其保存在內存做進一步的查詢,而不是每次都擊中數據庫。但是,如果將這些結果放入列表中,然後進一步應用子句,則最終將得不到結果,因爲直接從數據庫應用於查詢的where子句確實會返回結果。LINQ查詢的表對象列表返回的結果不同於LINQ-to-SQL對同一數據的查詢結果
這將返回我的列表中的項目:
DataContext db = new DataContext();
var data = db.myView.Where(x => [where clauses]).ToList();
這並不在我的列表中返回的項目:
DataContext db = new DataContext();
var data1 = db.myView.ToList();
var data2 = data1.Where(x => [where clauses]).ToList();
我用這個方法從內存中查詢,而而不是直接從數據庫中獲得大量次數,並且從未在結果中看到過任何差異。
下面是實際的,其中的邏輯:
.Where(x => ((((DateTime)x.DINVPDOF).Year == year && ((DateTime)x.DINVPDOF).Month == month && x.SOPNUMBE.Trim().ToUpper().StartsWith("SINV")) || ((x.DOCDATE >= new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(-1) && x.DOCDATE <= new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddDays(-1)) && (x.SOPNUMBE.Trim().ToUpper().StartsWith("CR") || x.SOPNUMBE.Trim().ToUpper().StartsWith("RC")))) && (x.USCATVLS_6 == "FGS") && (x.QUANTITY == 1) && !x.CUSTCLAS.Contains("SER") && (x.SLPRSNID != "HOUSE") && !(x.ITEMDESC.Contains("RETURN") && !x.ITEMDESC.Contains("CREDIT")))
是否有意義,這兩種方法應該永遠不會返回同樣的事情?也許在哪些條款中給我的行爲與我習慣的不同?
謝謝。