Helen Tekie
Helen Tekie

Reputation: 535

How to show multiple fields in combobox using linq in C# Windows form?

I want to show at least two column like FirstName and Lastname as DisplayMember and username as ValueMember from my Sql database. I tried like this but not working. It's working only with one field, but not if I want to show both Firstname and Lastname.

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;
 }

Upvotes: 3

Views: 908

Answers (2)

Ashkan Mobayen Khiabani
Ashkan Mobayen Khiabani

Reputation: 34152

Just join firstname and lastname in you linq query:

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

Edit (considering your comment):

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;

Upvotes: 1

MikeH
MikeH

Reputation: 4385

If you can modify the User class you have two options:

1) Override the ToString method and don't specify a DisplayMember:

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

2) Provide a property (e.g FirstAndLast) and set that as your DisplayMember:

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

Upvotes: 0

Related Questions