简单IEnumerable <int>到List <keyvaluepair <int,int =“”>&gt;?

时间:2016-07-07 08:57:40

标签: c# linq expression

以下代码可以正常使用:

cboDay.DataSource = Enumerable.Range(1, 31).ToDictionary(x => x, x => x).ToList<KeyValuePair<int, int>>();
cboDay.ValueMember = "Key";
cboDay.DisplayMember = "Value";

但有没有更好的方法来简化转换? (例如,消除ToDictionary?)

2 个答案:

答案 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();