我有一个思考的场景
class a
{
String Username;
String val;
}
List<a> lst = new List<a>();
List<a> lstnew = new List<a>();
Run Code Online (Sandbox Code Playgroud)
我需要的是lstnew我在val属性中有一些更新的值(仅在几个对象中),我需要的是使用LINQ更新lst带有更新值lstnew的Username属性作为属性
您可以加入这两个列表UserName,然后Value使用第二个列表中的s 更新第一个列表中的s.
例如,给定此类并列出:
public class a
{
public string UserName { get; set; }
public string Value { get; set; }
}
List<a> list = new List<a>
{
new a { UserName = "Perry", Value = "A" },
new a { UserName = "Ferb", Value = "B" },
new a { UserName = "Phineas", Value = "C" }
};
List<a> newList = new List<a>
{
new a { UserName = "Phineas", Value = "X" },
new a { UserName = "Ferb", Value = "Y" },
new a { UserName = "Candace", Value = "Z" }
};
Run Code Online (Sandbox Code Playgroud)
您可以加入以获取具有常见UserNames 的元素:
var common = from a1 in list
join a2 in newList on a1.UserName equals a2.UserName
select new { A1 = a1, A2 = a2 };
Run Code Online (Sandbox Code Playgroud)
此时,如果我理解正确,您想要更新原始列表中的元素:
foreach(var c in common)
{
c.A1.Value = c.A2.Value;
}
Run Code Online (Sandbox Code Playgroud)
在这一点上的元素list看起来像:
UserName Value
-----------------
Perry A
Ferb Y
Phineas X
Run Code Online (Sandbox Code Playgroud)