在foreach循环声明中使用LINQ

lin*_*use 5 .net linq foreach

在foreach循环声明中直接声明LINQ是不好的做法吗?在性能或细微的行为差异方面。

例如:

foreach (string name in persons.Select(x => x.name))
{
    //Do something with name
}
Run Code Online (Sandbox Code Playgroud)

p.s*_*w.g 5

不。没有错。只要Linq表达式简短且易于理解,我就说这是最重要的。您的示例是一个很好的示例,说明何时应以这种方式使用此类查询。

如果比它长得多,或者如果您使用查询语法,那么我建议将其分成两行,如下所示:

var names = persons.Select(x => x.name).Blah().Blah().Blah();
foreach (string name in names)
{
    //Do something with name
}
Run Code Online (Sandbox Code Playgroud)

要么

var names = 
    from x in persons
    select x.name;
foreach (string name in names)
{
    //Do something with name
}
Run Code Online (Sandbox Code Playgroud)