A和B是相同类型的引用类型集合,如果A和B的id字段相同,就把 A.Name =B.Name; 用Linq怎么写?
class Person
{
/// <inheritdoc />
public override string ToString()
{
return string.Format("ID: {0}, Name: {1}", ID, Name);
}
public int ID { set; get; }
public string Name { set; get; }
}
var A = new Person[]
{
new Person{ ID = 1, Name = "ABC" },
new Person{ ID = 2, Name = "HIJ" },
new Person{ ID = 3, Name = "NOP" },
new Person{ ID = 4, Name = "QRS" },
new Person{ ID = 5, Name = "TUV" }
};
var B = new Person[]
{
new Person{ ID = 1, Name = "杨福" },
new Person{ ID = 3, Name = "方坤" },
new Person{ ID = 4, Name = "周丽莎" },
new Person{ ID = 5, Name = "李华" }
};
//比较 Id 相等的,a.ID==b.ID
var result = A.Join(B, a => a.ID, b => b.ID, (a, b) => new //相当于.where( (a,b)=>a.ID==b.ID ).Select
{
//最后两个集合结果投影到一个新的匿名类型中
mA = a,
mB = b
});
//用查询语句 写 上面结果相同, result==result02
var result02 =
from a in A
join b in B on a.ID equals b.ID
select new { mA = a, mB = b };
foreach (var item in result)
{
item.mA.Name = item.mB.Name;
}
Debug.Log("\naaaaaaaaaaa\n");
A.ForEach(_ => Debug.Log(_));
A和B的交集 已经被修改了