2016-07-01 1 views
-1

Привет, ребята, я создал ярлык владельца, который добавляет аватар и имя друзей друзей и электронную почту. У меня небольшая проблема. В основном у меня есть запрос, который получает имена друзей друзей и электронную почту, а затем запрос добавляется в источник данных списка с помощью «query.ToList()». То, что я пытаюсь сделать, для каждого друга в источнике данных, я хочу, чтобы он создал новый элемент списка.C# Как использовать оператор foreach с использованием источника данных?

Код:

 FriendsLb.DisplayMember = "Display"; 
     FriendsLb.ValueMember = "FirstName"; 
     FriendsLb.ValueMember = "LastName"; 
     FriendsLb.ValueMember = "Email"; 

     var query = from o in Globals.DB.Friends 
        where o.UserEmail == Properties.Settings.Default.Email 
        select new 
        { 
         FirstName = o.FirstName, 
         LastName = o.LastName, 
         Email = o.Email, 

         Display = string.Format(" {0} {1} - ({2})", o.FirstName, o.LastName, o.Email), 
        }; 

     FriendsLb.DataSource = query.ToList(); 

     foreach (object contact in FriendsLb.DataSource)) 
     { 
      FriendsLb.Items.Add(new Contacts(Properties.Resources.avatar, contact.ToString())); 
     } 

Ошибка: Error Любые идеи? Приветствия

Это то, что она должна выглядеть, когда код является правильным:

Gui

+0

Вы не добавляете элементы в элементы управления, привязанные к DataSource; Doest 'Contact' включает информацию, которую вы собираете для запроса/DS? – Plutonix

+0

Вы добавили 'if (e.index> -1)' в событие DrawItem из вашего последнего удалённого сообщения? – LarsTech

+0

Нет, нет, контакт только получает данные об аватаре и другом и возвращает их – richardj97

ответ

0

Вы должны скорее создать DTO или ViewModel, то и использовать его, а как

public class Contact 
{ 
    public string Firstname {get; set;} 
    public string Lastname{get; set;} 
    public string Email {get; set;} 
    public string Display {get; set;} 
} 

    var query = from o in Globals.DB.Friends 
       where o.UserEmail == Properties.Settings.Default.Email 
       select new Contact 
       { 
        FirstName = o.FirstName, 
        LastName = o.LastName, 
        Email = o.Email, 

        Display = string.Format(" {0} {1} - ({2})", o.FirstName, o.LastName, o.Email), 
       }; 

Добавить источник данных для вашего управления данными, как показано ниже. Опять же, как уже отмечалось, вы можете иметь только один ValueMember, а не несколько.

FriendsLb.DataSource = query.ToList(); 
    FriendsLb.DisplayMember = "Display"; 
    FriendsLb.ValueMember = "Email"; 
+0

Спасибо! Как я могу использовать оператор foreach для добавления каждого друга в список? – richardj97

+0

@ richardj97, вы на самом деле не на самом деле. см. править в ответ, если это помогает. – Rahul