在下面的代码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(),看看是否解决了你的问题。 –