如何在C#Windows窗体中使用linq在combobox中显示多个字段?

时间:2018-11-13 18:09:41

标签: c# linq combobox

我想从我的Sql数据库中至少显示两列,如FirstName和Lastname作为DisplayMember,将用户名显示为ValueMember。我尝试过这种方法,但是没有用。它仅适用于一个字段,但如果我想同时显示名字和姓氏,则无法使用。

public void Employees()
{
            db = new DbEntities();


            var emp = (from u in db.Users
                        select u).ToList(); 
            cmbEmployee.DisplayMember =  "FirstName" +" " + " LastName";
            cmbEmployee.ValueMember = "UserName";
            cmbEmployee.DataSource = emp;
 }

2 个答案:

答案 0 :(得分:1)

只需在您的linq查询中加入名字和姓氏即可:

var emp = db.Users.Select(x=> $"{x.FirstName} {x.LastName}").ToList(); 
cmbEmployee.DataSource = emp;

编辑(考虑您的评论):

var emp = db.Users.Select(x=> new { 
               Display = x.FirstName + " " + x.LastName,
               Value = x.UserName}).ToList(); 
cmbEmployee.DisplayMember =  "Display";
cmbEmployee.ValueMember = "Value";
cmbEmployee.DataSource = emp;

答案 1 :(得分:0)

如果您可以修改User类,则有两个选择:

1)覆盖ToString方法,并且不要指定DisplayMember

public override string ToString()
{
  return FirstName + " " + LastName;
}

2)提供一个属性(例如FirstAndLast)并将其设置为您的DisplayMember

public string FirstAndLast { get => FirstName + " " + LastName; }