C# 是否仅更改列表框的DataValueField?

C# 是否仅更改列表框的DataValueField?,c#,asp.net,listbox,C#,Asp.net,Listbox,我有一个列表框 dimension.DataSource = provider.DimensionList; dimension.DataBind(); 我希望该值是这些元素的ID dimension.DataSource = provider.DimensionList; dimension.DataValueField = "ID"; dimension.DataBind(); 但是我不希望文本更改为ID,我希望维度.DataTextField获取对象.ToString() 如何做到这一

我有一个
列表框

dimension.DataSource = provider.DimensionList;
dimension.DataBind();
我希望该值是这些元素的
ID

dimension.DataSource = provider.DimensionList;
dimension.DataValueField = "ID";
dimension.DataBind();
但是我不希望文本更改为
ID
,我希望
维度.DataTextField
获取
对象.ToString()


如何做到这一点?

我不知道维度列表的确切类型,但我相信您可以使用select返回匿名类型:

dimension.DataSource = provider.DimensionList.Select(d=>new {Id=d.Id,Text=d.ToString()}).ToList();
dimension.DataValueField = "Id";
dimension.DataTextField = "Text";
dimension.DataBind();

maus给出的答案很酷。但奇怪的是,如果不指定任何内容,是否将Listbox的DataTextField设置为ID?默认情况下,它应设置为item.ToString()[item in DimensionList],您可以在item的类型中重写ToString()方法,该方法将解决您的问题。@Vijay,我没有指定任何内容。我试图将其设置为空和空,但没有任何更改。我想如果设置了一个,两个都会得到值……您可以尝试覆盖维度列表项类型上的ToString()方法,看看会发生什么。例如:如果DimensionList中的每个项都是类型测试类,那么您可以在测试中提供ToString()方法来返回当前状态的字符串表示形式。