【发布时间】:2021-08-15 21:18:15
【问题描述】:
我想用枚举值填充 WinForms Combobox,但是当我尝试使用 Linq 进行此操作时,Combobox 中没有添加任何项目。但是,foreach 变体可以正常工作。
我的 Linq:
Enum.GetNames(typeof(AgeCategory))
.Select(x => cbCategory.Items.Add(x));
我的 foreach:
foreach (var category in Enum.GetNames(typeof(AgeCategory)))
{
cbCategory.Items.Add(category);
}
另外,如果您知道更好的方法来做到这一点,我愿意接受不同的解决方案。
【问题讨论】:
-
Linq 版本有问题:Select 方法进行投影以创建项目集合,但在这里您只是调用了一个返回索引的方法......所以,为什么不呢?否则你不会execute the query,因此什么都不做,除非你调用 ToList。就个人而言,我发现这样的代码深奥,不干净,要避免,而且效率不高,因此危险。