Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么foreach循环工作,而Linq变体不工作';T_C#_Linq_Foreach - Fatal编程技术网

C# 为什么foreach循环工作,而Linq变体不工作';T

C# 为什么foreach循环工作,而Linq变体不工作';T,c#,linq,foreach,C#,Linq,Foreach,我想用枚举值填充WinForms组合框,但当我尝试使用Linq时,组合框中没有添加任何项。然而,foreach变体工作得很好 我的林克: Enum.GetNames(typeof(AgeCategory)) .Select(x => cbCategory.Items.Add(x)); 我的朋友: foreach (var category in Enum.GetNames(typeof(AgeCategory))) { cbCategory.Items.Add(categ

我想用枚举值填充WinForms组合框,但当我尝试使用Linq时,组合框中没有添加任何项。然而,foreach变体工作得很好

我的林克:

Enum.GetNames(typeof(AgeCategory))
    .Select(x => cbCategory.Items.Add(x));
我的朋友:

foreach (var category in Enum.GetNames(typeof(AgeCategory)))
{
    cbCategory.Items.Add(category);
}
另外,如果您知道更好的方法,我愿意接受不同的解决方案。

正在使用。这意味着,如果您使用
foreach
或其他类似
ToList
/
ToArray
的方法,它将被执行。在此之前,它只是构建查询

那为什么要编译,你在那里做什么?您必须查看它是否不是
void
(不返回任何内容),而是返回已添加项的索引。所以你在这里选择整数,这不是你想要的

您可以使用这种方法:

cbCategory.Items.AddRange(Enum.GetNames(typeof(AgeCategory)));
根据经验:使用LINQ查询某些内容,而不是修改(添加)某些内容

值得一读:

正在使用。这意味着,如果您使用
foreach
或其他类似
ToList
/
ToArray
的方法,它将被执行。在此之前,它只是构建查询

那为什么要编译,你在那里做什么?您必须查看它是否不是
void
(不返回任何内容),而是返回已添加项的索引。所以你在这里选择整数,这不是你想要的

您可以使用这种方法:

cbCategory.Items.AddRange(Enum.GetNames(typeof(AgeCategory)));
根据经验:使用LINQ查询某些内容,而不是修改(添加)某些内容


值得一读:

Linq版本有缺陷:Select方法进行投影以创建项目集合,但这里您只是调用一个返回索引的方法。。。那么,为什么不呢?否则你不会,所以什么也不做,除非你调用ToList。就我个人而言,我发现这样的代码深奥,不干净,而且要避免,而且效率不高,因此很危险。Linq版本有缺陷:Select方法进行投影以创建项目集合,但这里您只是调用一个返回索引的方法。。。那么,为什么不呢?否则你不会,所以什么也不做,除非你调用ToList。就我个人而言,我发现这样的代码深奥、不干净、难以避免,而且效率不高,因此很危险。