以下代码可以正常使用:
cboDay.DataSource = Enumerable.Range(1, 31).ToDictionary(x => x, x => x).ToList<KeyValuePair<int, int>>();
cboDay.ValueMember = "Key";
cboDay.DisplayMember = "Value";
但有没有更好的方法来简化转换? (例如,消除ToDictionary
?)
答案 0 :(得分:3)
当然,只需使用Select
:
cboDay.DataSource = Enumerable.Range(1, 31)
.Select(x => new KeyValuePair<int, int>(x, x))
.ToList();
目前尚不清楚你是否需要这是List<T>
,但这样做可以保证它只会被评估一次,并且可以允许对你正在使用的任何内容进行一些优化。
没有必要创建Dictionary
- 事实上,通过这样做,您目前无法保证订购,而上述代码肯定会按顺序给您1-31。
答案 1 :(得分:2)
确定可以替换
Enumerable.Range(1, 31).ToDictionary(x => x, x => x).ToList<KeyValuePair<int, int>>();
带
Enumerable.Range(1, 31).Select(x => new KeyValuePair<int, int>(x,x)).ToList();