Search code examples
c#genericscollectionsilist

Update IList<T> from another IList<T>


I have two ILists.

users of type IList<CustomClassOne> and

contacts of type IList<CustomClassTwo>.

Both classes have a unique ID. I need fill CustomClassOne's property "Description" by using CustomClassTwo's property "Info".

foreach (CustomClassOne user in users )
{
    if (!string.IsNullOrEmpty(user.Description))
    {
        long id = user.ID;
        string desc = user.Description;

        var temp =  contacts.Select(p => p.ID = id);
        ...
        ...
    }
    else
        continue;

}

Solution

  • It sounds like you need to use a Join:

    foreach (var pair in users.Join(contacts, u => u.ID, c => c.ID, Tuple.Create))
    {
        pair.Item1.Description = pair.Item2.Info;
    }
    

    Or if you prefer query syntax:

    var pairs = 
        from user in users 
        join contact in contacts on user.ID equals contact.ID
        select new { user, contact };
    foreach (var pair in pairs)
    {
        pair.user.Description = pair.contact.Info;
    }