C# 为什么foreach循环工作,而Linq变体不工作';T
我想用枚举值填充WinForms组合框,但当我尝试使用Linq时,组合框中没有添加任何项。然而,foreach变体工作得很好 我的林克: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
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。就我个人而言,我发现这样的代码深奥、不干净、难以避免,而且效率不高,因此很危险。