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")))
是否有意义,这两种方法应该永远不会返回同样的事情?也许在哪些条款中给我的行为与我习惯的不同?
谢谢。