0
我想用LINQ創建我的第一個數據庫查詢。對於練習,我使用的是Microsoft的Adventure Works 2014數據庫。我可以優化我的LINQ查詢嗎?
我的第一個目標之一是爲DataService創建靜態方法,返回給定供應商名稱的所有產品的列表。它看起來像我的方法返回正確的數據,但我認爲它是非常糟糕的優化。我能以某種方式改進它嗎?
public static List<Product> GetProductsByVendorName(string vendorName)
{
AdventureWorksDatabaseClassDataContext dc = new AdventureWorksDatabaseClassDataContext();
int vendorID = dc.Vendors.Where(vendor => vendor.Name == vendorName).Select(vendor => vendor.BusinessEntityID).First();
IEnumerable <ProductVendor> productsVendor = dc.ProductVendors;
IEnumerable<int> selectedProductsID = from ProductVendor productVendor in productsVendor
where productVendor.BusinessEntityID == vendorID
select productVendor.ProductID;
IEnumerable<Product> products = dc.Products;
IEnumerable<Product> selectedProducts = from Product p in products
where selectedProductsID.Contains(p.ProductID)
select p;
return selectedProducts.ToList();
}
看起來你正在編寫代碼連接。代之以將其寫入查詢中。 – CodeCaster
我投票結束這個問題作爲題外話,因爲沒有指定此代碼的具體問題。考慮在https://codereview.stackexchange.com上提出重構問題 –
好的,使用單個查詢而不是三個不同的查詢。 –