如何在组合框的顶部插入项目?

Use*_*404 3 c# linq-to-sql winforms

嗨,我使用Linq到SQl绑定组合框控件.如何在组合框列表的顶部添加项?

var items = from c in db.Contacts
                               orderby c.Name ascending
                               select c;
                if (items.ToList().Count > 0)
                {
                    cmb1.BindingContext = new BindingContext();
                    cmb1.DataSource = items;
                    cmb1.DisplayMember = "Name";
                    cmb1.ValueMember = "ID";
                }

                cmb1.Items.Insert(0, "--Select--");
Run Code Online (Sandbox Code Playgroud)

上面的代码失败了.

小智 9

一种方法是在绑定之前将"--Select--"联系人占位符插入到结果中:

     var items = (from c in db.Contacts
                  orderby c.Name ascending
                  select c).ToList();

     items.Insert(0, new Contact { ID = 0, Name = "--Select--" });

     cmb1.BindingContext = new BindingContext();
     cmb1.DataSource = items;
     cmb1.DisplayMember = "Name";
     cmb1.ValueMember = "ID";
Run Code Online (Sandbox Code Playgroud)

或者您可以使用匿名版本的结果执行相同的操作:

     var items = (from c in db.Contacts
                  orderby c.Name ascending
                  select new { c.ID, c.Name }).ToList();

     items.Insert(0, new { ID = 0, Name = "--Select--" });

     cmb1.BindingContext = new BindingContext();
     cmb1.DataSource = items;
     cmb1.DisplayMember = "Name";
     cmb1.ValueMember = "ID";
Run Code Online (Sandbox Code Playgroud)