C# 简单的IEnumerable<;int>;列出<;KeyValuePair<;int,int>>;?
以下代码可以正常工作:C# 简单的IEnumerable<;int>;列出<;KeyValuePair<;int,int>>;?,c#,linq,expression,C#,Linq,Expression,以下代码可以正常工作: cboDay.DataSource = Enumerable.Range(1, 31).ToDictionary(x => x, x => x).ToList<KeyValuePair<int, int>>(); cboDay.ValueMember = "Key"; cboDay.DisplayMember = "Value"; cboDay.DataSource=Enumerable.Range(1,31).ToDictionar
cboDay.DataSource = Enumerable.Range(1, 31).ToDictionary(x => x, x => x).ToList<KeyValuePair<int, int>>();
cboDay.ValueMember = "Key";
cboDay.DisplayMember = "Value";
cboDay.DataSource=Enumerable.Range(1,31).ToDictionary(x=>x,x=>x).ToList();
cboDay.ValueMember=“Key”;
cboDay.DisplayMember=“Value”;
但是有没有更好的方法来简化转换?(例如,删除到字典
?)确定可以替换吗
Enumerable.Range(1, 31).ToDictionary(x => x, x => x).ToList<KeyValuePair<int, int>>();
Enumerable.Range(1,31).ToDictionary(x=>x,x=>x).ToList();
与
Enumerable.Range(1,31)。选择(x=>newkeyvaluepair(x,x)).ToList();
当然可以,只需使用选择
:
cboDay.DataSource = Enumerable.Range(1, 31)
.Select(x => new KeyValuePair<int, int>(x, x))
.ToList();
cboDay.DataSource=Enumerable.Range(1,31)
.选择(x=>newkeyvaluepair(x,x))
.ToList();
不清楚您是否需要将其设置为列表
,但这样做可以保证只对其进行一次评估,并且可能允许对您正在使用的任何内容进行一些优化
无需创建
词典
——事实上,这样做目前并不能保证顺序,而上面的代码肯定会给你1-31个顺序。抛出异常复杂数据绑定接受IList或IListSource作为数据源
@Ivan MarkDebono添加。ToList()
cboDay.DataSource = Enumerable.Range(1, 31)
.Select(x => new KeyValuePair<int, int>(x, x))
.ToList();