我有這個疑問查詢太慢 - 獲取和更新記錄使用LINQ查詢
foreach (var item in collection)
{
var countrylist = from country in countryList
where
(from state in stateList
where
(from city in cityList
where
city.CityID == item.CityID
select new
{
city.CountryID
}).Contains(new { StateID = state.StateID })
select new
{
state.CountryID
}).Contains(new { CountryID = country.CountryID })
select new
{
CountryID = country.CountryIDD,
Name = country.Name
};
item.Country = new Country();
item.Country.CountryID = countrylist.Select(s => s.CountryID).FirstOrDefault();
item.Country.Name = countrylist.Select(s => s.CountryName).FirstOrDefault();
}
它會根據給定的cityID和CountryId和國家或地區名稱,然後它收集更新相關的對象。現在它運行在一個循環中,目前我有5-10個項目(測試數據)在集合中,並且需要相當長的時間(明顯很慢)。如果5-10項物品緩慢,100+物品的速度太慢。有另一種方法可以讓這件事變得更好嗎?
我會感謝任何形式的幫助
的
嘗試:https://msdn.microsoft.com/en-us/library/bb311040 .aspx?f = 255&MSPPError = -2147217396 –
首先簡化查詢。如果你不明白它的作用,你不能讓它走得更快。然後檢查缺少的索引。此外,不是對每個項目執行相同的查詢,而是生成item.CityID列表並使用'where itemCities.Contains(city.CityID)'。這轉換爲一個單一的查詢與'IN(...)'子句,而不是5-10慢查詢 –
@MurrayFoxcroft我同意我不知道爲什麼我沒有想到第一個 – Angloos