如何在组合框中插入第一个带有文本“QUOTE”的项目;选择";在C#windows应用程序中使用默认值0

如何在组合框中插入第一个带有文本“QUOTE”的项目;选择";在C#windows应用程序中使用默认值0,c#,.net,ienumerable,C#,.net,Ienumerable,我正在使用C#windows应用程序。我的代码如下 var categoryList = _objCategoryManager.GetAll(); cmbCategory.DisplayMember = "Name"; cmbCategory.ValueMember = "Id"; cmbCategory.DataSource = categoryList; 这里的categoryList是IEnumerable类型。我想在0索引处的组合框中插入项,即“--选择--”数据绑定后,无法将项插入

我正在使用C#windows应用程序。我的代码如下

var categoryList = _objCategoryManager.GetAll();
cmbCategory.DisplayMember = "Name";
cmbCategory.ValueMember = "Id";
cmbCategory.DataSource = categoryList;

这里的categoryList是IEnumerable类型。我想在0索引处的组合框中插入项,即“--选择--”

数据绑定后,无法将项插入到组合框中。而是先在数据源的副本中插入该项,然后进行绑定

如果
categoryList
IEnumerable
而不是
列表
,则应将其复制到
列表
,以便在第一个索引处添加默认值:

var categoryList = _objCategoryManager.GetAll().ToList();
categoryList.Insert(0, new Category {Id = -1, Name = "--SELECT--"});

只需将其插入列表,如下所示

var categoryList = _objCategoryManager.GetAll().ToList();
cmbCategory.DisplayMember = "Name";
cmbCategory.ValueMember = "Id";

categoryList.Insert(0, new Category() { Name = "--SELECT--"} );

cmbCategory.DataSource = categoryList;
使用LINQ,您可以找到要更改的对象(绑定后)并修改该项

否则,如果要将对象添加到列表中:

categoryList.ToList().Add(obj); // This should show the new item in the combo box

最终,您的.GetAll()方法应该返回第一个要为--SELECT--“的方法,而不是事后尝试修改它。

categoryList.Insert(..
“此处categoryList的类型为IEnumerable”,并且该类型没有名为
Insert
try
categoryList.Add
categoryList.ToList().Add(…)
,或
categoryList.Find(o=>o.objId==objId).Name=“--SELECT”
@BinkanSalaryman,感谢您指出,我错过了这一部分,并认为这是一个列表,因为Name
categoryList
categoryList.ToList().Add(obj); // This should show the new item in the combo box