gpt4 book ai didi

c# - 如何将此代码合并到一个或两个 LINQ 查询中?

转载 作者:太空狗 更新时间:2023-10-29 22:56:32 24 4
gpt4 key购买 nike

我在这里问这个可能有点懒,但我才刚刚开始使用 LINQ,我有一个函数,我确信它可以变成两个 LINQ 查询(或一个嵌套查询)而不是一个 LINQ和几个 foreach 语句。有哪位 LINQ 大师愿意为我重构这个例子吗?

函数本身循环遍历 .csproj 文件列表并提取项目中包含的所有 .cs 文件的路径:

static IEnumerable<string> FindFiles(IEnumerable<string> projectPaths)
{
string xmlNamespace = "{http://schemas.microsoft.com/developer/msbuild/2003}";
foreach (string projectPath in projectPaths)
{
XDocument projectXml = XDocument.Load(projectPath);
string projectDir = Path.GetDirectoryName(projectPath);

var csharpFiles = from c in projectXml.Descendants(xmlNamespace + "Compile")
where c.Attribute("Include").Value.EndsWith(".cs")
select Path.Combine(projectDir, c.Attribute("Include").Value);
foreach (string s in csharpFiles)
{
yield return s;
}
}
}

最佳答案

怎么样:

        const string xmlNamespace = "{http://schemas.microsoft.com/developer/msbuild/2003}";

return from projectPath in projectPaths
let xml = XDocument.Load(projectPath)
let dir = Path.GetDirectoryName(projectPath)
from c in xml.Descendants(xmlNamespace + "Compile")
where c.Attribute("Include").Value.EndsWith(".cs")
select Path.Combine(dir, c.Attribute("Include").Value);

关于c# - 如何将此代码合并到一个或两个 LINQ 查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/214772/

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