在下面的代碼foreach
循環工作正常,但是當我嘗試使用LINQ
而不是使用foreach
它不起作用無例外沒有錯誤。想要使用LINQ而不是foreach,但它不起作用
此代碼工作:
public static IEnumerable<PatternInfo> LoadPatterns() {
var directoryInfo = new DirectoryInfo(PatternFullPath);
var dirs = directoryInfo.EnumerateDirectories();
var result = new List<PatternInfo>();
foreach (var info in dirs)
{
result.Add(new PatternInfo
{
PatternName = info.Name,
TemplateFileNames = GetTemplateFiles(info.FullName)
});
}
return result;
}
但是這一次沒有:
public static IEnumerable<PatternInfo> LoadPatterns() {
var directoryInfo = new DirectoryInfo(PatternFullPath);
var dirs = directoryInfo.EnumerateDirectories();
var patterns = dirs.Select(info => new PatternInfo {
PatternName = info.Name,
TemplateFileNames = GetTemplateFiles(info.FullName)
});
return patterns;
}
任何意見將是有益的。
當你說沒有例外,沒有錯誤,究竟發生了什麼?當你摺疊它時,你有一個枚舉值爲0的項目? – Tejs
直到您需要linq查詢纔會執行,PatternFullpath可能在您使用IEnumerable時發生了更改。做一個patterns.ToList(),看看是否解決了你的問題。 –