foreach (Feature fe in features)
{
if (fileNames.Any(file => file.Contains(fe.FeatureName)))
{
fe.MatchCount = fe.MatchCount == 0 ? 1 : fe.MatchCount;
}
}
回答
東西值得一提的是,隨着「的ForEach再次物化查詢到一個列表,然後再遍歷它'如果你的名單很大,可能是一個非常昂貴的電話。我會建議增加以下擴展方法送「的ForEach」方法的IEnumerable:
public static void Map<T>(this IEnumerable<T> source, Action<T> func)
{
foreach (T i in source)
func(i);
}
我叫我的地圖,但你可以調用它的ForEach,如果你選擇。這將打開丹尼的回答到:
features.Where(f => fileNames.Any(file => file.Contains(f.FeatureName)))
.Map(x => x.MatchCount = x.MatchCount == 0 ? 1 : x.MatchCount);
features.Where(f => fileNames.Any(file => file.Contains(f.FeatureName)))
.ToList()
.ForEach(x => x.MatchCount = x.MatchCount == 0 ? 1 : x.MatchCount);
您是變異對象在循環變量的結束,所以你不能在純 LINQ做(乾淨)。只需保持循環;這將是容易理解的,但也許它可以減少位:
var qry = features.Where(fe => fe.MatchCount == 0 &&
fileNames.Any(file => file.Contains(fe.FeatureName));
foreach (Feature fe in qry) { fe.MatchCount == 1; }
+1我不明白爲什麼人們不喜歡'foreach(blabla)',他們總是比較喜歡單線linq表達式,它比'foreach'循環。 – 2010-10-13 07:15:26
對答案+1(和@ Danny的評論) – 2010-10-13 07:16:38
也調試linq查詢是一個痛苦。 – Jake 2010-10-13 07:23:37
Func<Feature, Feature> updateMatchCount = (fe) =>{
fe.MatchCount = fe.MatchCount == 0 ? 1 : fe.MatchCount;
return fe;
};
var updatedFeatures = from fe in features
where fileNames.Any(file => file.Contains(fe.FeatureName))
select updateMatchCount(fe);
- 1. 如何避免重複以下代碼?
- 2. 如何重構代碼以避免Java循環中的標籤?
- 3. 如何避免在Linq to Sql查詢中循環循環?
- 4. 如何避免使用Spark循環?
- 5. 如何避免infinte循環
- 6. 如何避免循環
- 7. Hashset處理,以避免在迭代過程中陷入循環
- 8. 如何通過StringBuilder避免Java OutofMemoryError堆空間循環?
- 9. 如何避免通過數組循環來找到部分匹配?
- 10. PHP - 如何通過htaccess來避免重定向中的無限循環
- 11. 模式,以避免循環調用
- 12. 避免while循環
- 13. 避免for循環
- 14. 如何重構此JavaScript代碼以避免在循環中生成函數?
- 15. 避免通過使用jQuery
- 16. 如何通過使用循環函數獲得簡明代碼
- 17. 避免使用讓關鍵字做自我循環的LINQ
- 18. 使用@XmlIDREF避免JAXB循環引用
- 19. 以純代碼避免IORefs
- 20. 如何通過LINQ結果循環(VB.NET)
- 21. 如何通過在python中使用while循環來打印以下模式?
- 22. 如何通過使用css轉換來避免文本混亂
- 23. 避免多次編碼循環一次
- 24. 避免使用嵌套for循環
- 25. 如何避免在以下代碼中強制轉換爲(ServiceException)?
- 26. 如何通過JSF和JPA避免模型代碼重複
- 27. 通過使用泛型避免在下面的代碼中鑄造
- 28. 如何避免驗證循環?
- 29. 如何避免重複在PHP循環
- 30. 如何避免嵌套循環
這會不會扔收藏」異常被修改;枚舉操作可能不會執行 – Younes 2010-10-13 07:14:14
@Younes:?集合不修改集合中的對象的屬性被修改(或者會;看起來這個任務是缺失的),但是集合本身沒有被修改 – 2010-10-13 07:15:46
@Younes:是嗎?這是一個記事本代碼,我沒有嘗試,但我認爲它不會拋出異常,因爲我首先將其轉換爲ToList,修改是基於列表 – 2010-10-13 07:17:14