如何将对象列表映射到另一个有条件的对象上

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

另一个没有,但它们在 prop1prop2

的组合上是相同的
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;