簡體   English   中英

更新IList <T> 從另一個IList <T>

[英]Update IList<T> from another IList<T>

我有兩個ILists。

IList<CustomClassOne>類型的用戶,以及

IList<CustomClassTwo>類型的聯系人。

這兩個類都有唯一的ID。 我需要使用CustomClassTwo的屬性“ Info”來填充CustomClassOne的屬性“ Description”。

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;

}

聽起來您需要使用Join

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

或者,如果您更喜歡查詢語法

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

您可以使用Join將兩種類型匹配在一起,然后可以迭代匹配並應用更改。

var query = from contact in contacts
    join user in users
    on contact.Id equals user.Id
    into users
    select new 
    {
        contact,
        users,
    }

foreach(var match in query)
    foreach(var user in match.users)
    {
        user.Description = match.contact.Info;
    }

您可以在foreach循環中進行搜索,如果找到,則將其分配給CustomClassOne實例:

foreach (CustomClassOne item in users)
{
     var temp = contacts.Find(c => c.ID == item.ID);
     item.Description = temp == null ? item.Description : temp.Info;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM