Я хочу, чтобы объединить два списка следующего классаКак объединить два списка
public class ContactsByUser
{
public int UserId { get; set; }
public string Username { get; set; }
public int CountContacts { get; set; }
public int CountBehaviorInterview { get; set; }
public override bool Equals(object obj)
{
return this.UserId == ((ContactsByUser)obj).UserId;
}
public override int GetHashCode()
{
return UserId.GetHashCode();
}
}
Теперь у меня есть 2 списков, содержащих следующие
List<ContactsByUser> contacts = new List<ContactsByUser>();
contacts.Add(new ContactsByUser { UserId = 1, Username = user1, CountContacts = 42, CountBehaviorInterview = 0});
contacts.Add(new ContactsByUser { UserId = 2, Username = user2, CountContacts = 25, CountBehaviorInterview = 0});
contacts.Add(new ContactsByUser { UserId = 3, Username = user3, CountContacts = 7, CountBehaviorInterview = 0});
contacts.Add(new ContactsByUser { UserId = 4, Username = user4, CountContacts = 10, CountBehaviorInterview = 0});
contacts.Add(new ContactsByUser { UserId = 5, Username = user5, CountContacts = 23, CountBehaviorInterview = 0});
contacts.Add(new ContactsByUser { UserId = 6, Username = user6, CountContacts = 60, CountBehaviorInterview = 0});
contacts.Add(new ContactsByUser { UserId = 7, Username = user7, CountContacts = 3, CountBehaviorInterview = 0});
List<ContactsByUser> interviews = new List<ContactsByUser>();
interviews .Add(new ContactsByUser { UserId = 1, Username = user1, CountContacts = 0, CountBehaviorInterview = 33});
interviews .Add(new ContactsByUser { UserId = 2, Username = user2, CountContacts = 0, CountBehaviorInterview = 21});
interviews .Add(new ContactsByUser { UserId = 3, Username = user3, CountContacts = 0, CountBehaviorInterview = 8});
interviews .Add(new ContactsByUser { UserId = 4, Username = user4, CountContacts = 0, CountBehaviorInterview = 17});
То, что я хотел бы иметь, когда я объединить эти 2 перечислены является следующий результат
{ UserId = 1, Username = user1, CountContacts = 42, CountBehaviorInterview = 33});
{ UserId = 2, Username = user2, CountContacts = 25, CountBehaviorInterview = 21});
{ UserId = 3, Username = user3, CountContacts = 7, CountBehaviorInterview = 8});
{ UserId = 4, Username = user4, CountContacts = 10, CountBehaviorInterview = 17});
{ UserId = 5, Username = user5, CountContacts = 23, CountBehaviorInterview = 0});
{ UserId = 6, Username = user6, CountContacts = 60, CountBehaviorInterview = 0});
{ UserId = 7, Username = user7, CountContacts = 3, CountBehaviorInterview = 0});
в первом списке свойство CountBehaviorInterview всегда будет 0, а на с ecand list CountContacts всегда будет 0.
Я пробовал использовать союз, но все, что он делает, возвращает список с 2 списками внутри. Есть ли способ объединить их так, как мне нужно?
У вас есть две проблемы с вашим класса 'ContactsByUser', кстати. Во-первых, ваш метод Equals будет сбой, если ваш тип будет сопоставлен с чем-то, что не передается в 'ContactsByUser'. Во-вторых, вы никогда не должны ** вычислять 'GetHashCode' в поле/свойство, которое изменено. Значение 'GetHashCode' ** не должно ** изменяться на время жизни объекта, чтобы оно работало в любой хэш-структуре, например' Dictionary <,>'. – Enigmativity