我只是將這些數據發送到Asp.net MVC5中的報表引擎(SSRS)。
一切都很好,但這個查詢花了很多時間,因爲我必須循環通過ListProducts
(我猜ListProducts
是數據庫匹配的大小)。其中列表中包含任何列表
我只是在尋找一種方法來優化這個查詢。
我試過any
和contains
(如下圖所示),但它們似乎不適用於單個表格。
context.Products.Where(w => w.ProductDetail.Any(a => a.startDate >= startDate
&& a.endDate <= endDate))
我得到這個從here
2)我試圖this as well
context.Products.Where(w => ListProducts.Any(x =>w.Contains(x)))
但這也不能正常工作,並生成一個編譯時錯誤
的System.Guid不包含'Contains'的定義
有沒有其他方法,或者我正在做它唯一正確的方法?
foreach (var item in ListProducts)
{
List.AddRange(_context.Products.Where(w => w.ProductId== item).Select(q => new ProductVM
{
Name = q.Name,
Quantity = q.Quantity,
}).ToList().Select(item=> new ProductVM
{
Name = item.Name,
Quantity = item.Quantity,
}).ToList());
}
public class Product
{
public Nullable<System.Guid> ProductId { get; set; }
public string Name { get; set;}
public decimal Quantity { get; set; }
}
在你可能想提供一個定義或Product'的'POCO最起碼的。可以推斷,但是你讓人們做更多的分析工作,而不是解決其他非常簡單的問題。 – nathanchere
你必須使用LINQ嗎?如何通過'_context'執行Raw SQL,以便優化查詢。你甚至可以使用像Dapper這樣的ORM,它會很好地爲你繪製你的對象。非常強大的工具,速度也非常快。有一個數據結構可以很好,所以我可以看到這一切如何在數據庫中聯繫起來。 – scgough
其實我沒有提供原始的類和數據,由於一些限制,但我已經做出了基於這些類的例子,數據庫的實際設計是相當複雜的,但我已經做了一個簡單的例子,以便快速理解,所以你可以把它作爲一個產品類具有像名稱數量少的屬性,我只是想獲得數據,如問題中所解釋的..如果需要更多的解釋,然後隨意問 – Dragon