更新IList< T>从另一个列表< >
本文关键字:列表 另一个 IList 更新 | 更新日期: 2023-09-27 18:18:37
我有两个list
类型为IList<CustomClassOne>
和
IList<CustomClassTwo>
型触点。
两个类都有唯一的ID。我需要填充CustomClassOne的属性"Description"使用CustomClassTwo的属性"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;
}
听起来你需要使用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;
}