gpt4 book ai didi

c# - 想使用 LINQ 而不是 foreach 但它不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 17:57:26 26 4
gpt4 key购买 nike

在以下代码中foreach循环工作正常,但是当我尝试使用 LINQ而不是使用 foreach它不起作用没有异常(exception)没有错误。

此代码有效:

    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;
}

任何建议都会有所帮助。

最佳答案

两者的区别在于,在第一个代码示例中,您有一个 List<PatternInfo> ,列表中的所有项目都已填充 - 然后将此列表返回为 IEnumerable<PatternInfo> .

在第二个示例中,您有一个 IEnumerable<PatternInfo> - 这只会在您第一次遍历枚举时加载模式。

如果您希望第二个版本是等效的(渴望加载模式),然后添加 ToList() :

return patterns.ToList();

关于c# - 想使用 LINQ 而不是 foreach 但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7561544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com