2012-01-10 5 views
0

Я использую LINQ to Entites в своем приложении WindowsForm.Заполнение ListBox со списком <Entity>

Я пытаюсь заполнить Lisbox с результатом запроса:

Так что мой источник данных является списком, где пользователь таблица в моей базе данных и EntityType в моей модели.

Проблема заключается в том, что Дисплей должен быть представлен тремя разными столбцами. (User.Firstname + "" + user.LastName + "-" + user.userCode)

и ValueMember будет user.ID;

Я мог бы просто создать структуру userItem с помощью 4 элементов, перебрать список пользователей и добавить их в другой список. Но это похоже на двойную обработку.

ответ

3

Вы можете расширить Entity в частичном классе с настраиваемым свойством, как это:

public partial class User 
{ 
    public string Description 
    { 
     get 
     { 
      return string.Format("{0} {1} - {2}", FirstName, LastName, UserCode); 
     } 
    } 
} 

Если вы не хотите, чтобы добавить свойство, можно также используйте проекцию Linq создать собственный список с вычисленной собственностью:

var listdata = (from u in Users 
       select new 
       { 
        Description = string.Format("{0} {1} - {2}", u.FirstName, u.LastName, u.UserCode). 
        Id = u.Id;  
       }.ToList(); 

Затем вы можете связать ListData к вашей ListBox.

+0

Я закончил тем, что расширил свою сущность, как вы предложили. является String.format более эффективным, чем просто "" + "" + - ""? или вы просто предпочитаете его по косметическим соображениям – michael

+0

Я всегда думал, что string.Format более эффективен, поэтому я использовал его в этом примере, но когда я искал ссылку, я наткнулся на http://stackoverflow.com/questions/16432/ c-sharp-string-output-format-or-concat, и кажется, что конкатенация выполняется быстрее! –

2

Почему бы вам просто не создать property в вашем model, который возвращает связанное значение от трех columns/properties. Затем установите DisplayMemeber, равное этому свойству

Другим способом может быть добавление Computed Columns в ваш стол. Объединить значения остальных столбцов с помощью выражения

+0

Я бы застрелил любого, кто добавил вычисленный столбец в базу данных для того, что по сути является свойством отображения. Просто говорю. Неплохое место. – slugster

+0

Я бы не поместил его в hte Database, но perhapes в модели LINQ это приемлемо? – michael

Смежные вопросы