ここで質問するのは少し怠け者かもしれませんが、LINQ を使い始めたばかりで、LINQ と 2 つのクエリではなく、2 つの LINQ クエリ (または 1 つのネストされたクエリ) に変換できると確信している関数があります。 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;
}
}
}