如何将对象列表映射到另一个有条件的对象上
How to map a list of objects on another one with condition
我有两个列表。其中之一有一个 Id
var a = new List<MyModel>
{
new MyModel()
{
id = 1,
prop1 = 1,
prop2 = 1
},
new MyModel()
{
id = 2,
prop1 = 2,
prop2 = 3
},
};
另一个没有,但它们在 prop1
和 prop2
的组合上是相同的
var b = new List<MyModel>
{
new MyModel()
{
prop1 = 1,
prop2 = 1
},
new MyModel()
{
prop1 = 2,
prop2 = 3
},
};
当 a.prop1 = b.prop1 && a.prop2 == b.prop2
时,我需要使用列表 a
中的 ID 填充列表 b
,但我不知道如何正确编写此 linq
这两个列表始终相同,但无序。我想我可以对它们进行排序,然后一个一个地分配它们,但我想知道是否有其他方法
这对我有用:
var query =
from bb in b
join aa in a on new { bb.prop1, bb.prop2 } equals new { aa.prop1, aa.prop2 }
select new { bb, aa.id };
foreach (var q in query)
q.bb.id = q.id;
我有两个列表。其中之一有一个 Id
var a = new List<MyModel>
{
new MyModel()
{
id = 1,
prop1 = 1,
prop2 = 1
},
new MyModel()
{
id = 2,
prop1 = 2,
prop2 = 3
},
};
另一个没有,但它们在 prop1
和 prop2
var b = new List<MyModel>
{
new MyModel()
{
prop1 = 1,
prop2 = 1
},
new MyModel()
{
prop1 = 2,
prop2 = 3
},
};
当 a.prop1 = b.prop1 && a.prop2 == b.prop2
时,我需要使用列表 a
中的 ID 填充列表 b
,但我不知道如何正确编写此 linq
这两个列表始终相同,但无序。我想我可以对它们进行排序,然后一个一个地分配它们,但我想知道是否有其他方法
这对我有用:
var query =
from bb in b
join aa in a on new { bb.prop1, bb.prop2 } equals new { aa.prop1, aa.prop2 }
select new { bb, aa.id };
foreach (var q in query)
q.bb.id = q.id;