我在評論一種方法,它將使用Entity Framework
和LINQ
的搜索查詢(使用物品空間分隔)與產品表進行比較。我沒有與任何以往的經驗,超越基礎:LINQ基本性能比較
var products = new List<Product>();
using (var ctx = new Context())
{
var query = id.SearchQuery.Trim().Split(' ');
foreach (var value in query)
{
products.AddRange(ctx.EagerProducts().Where(product =>
product.Name.Contains(value) ||
product.Specification.Contains(value) ||
product.CarModel.Contains(value) ||
product.Reference.Contains(value) ||
product.Category.Name.Contains(value) ||
product.Type.Name.Contains(value) ||
product.CarBrand.Name.Contains(value) ||
product.ProductBrand.Name.Contains(value) ||
product.Store.Name.Contains(value)));
}
products = products.Distinct().ToList();
}
return View(products);
代碼工作,並返回匹配的過濾器不同的結果列表的事,但似乎仍然沒有完全正確我。我覺得這不是最有效的方法。我是對的還是寫得很好?關於如何讓上述邏輯更好的建議?
P.S. EagerProducts是上下文的擴展,它返回急切加載的產品。
,我剪輯通過僅計算一次文本來使其更加優化,可能是無用的,而編譯器會自動執行。 – Dharun
首先,我認爲這不會在linq2EF中正常工作,如果它工作,它是錯誤的,假設:name =「aba」,specification =「dc」,並且查詢對象中唯一的項目是「abadc」,您的方法返回true,但它是錯誤的。 –
@SaeedAmiri謝謝,實際上並沒有注意到,直到現在(首先等待是個好主意)。附:您對查詢本身有什麼看法? –