C# 匹配两个列表并从中创建对象
C# Match two lists and create object out of this
我需要一些帮助来解决一个小问题:
我有一个 List a 和一个 List b。 列表 b 包含一个 MigrationID,它是 列表 a 中对象的 ID 。
现在我想匹配具有相同 MigrationID 和 ID 的对象,并从中创建一个新的 SyncObject 其中包含 obj a、obj b 和 SyncID。但我不想使用循环,因为我认为它表现不佳。
例如:
if b.MigrationID = a.ID => create new SyncObejct(SyncID, obj a, obj b)
我的代码现在看起来有点像这样:
private class SyncObject
{
private Guid syncID { get; set; }
private ItemA aItem { get; set; }
private ItemB bItem { get; set; }
}
public void SynchObjAToObjB<T, A>() where T : ItemA, new() where A : ItemB, new()
{
List<T> listA aItems;
List<A> listB bItems;
//here mapping
}
列表中都填满了数据。
谢谢!
也许是这样的:
class ItemA
{
public Guid Id { get; set; }
public string MetaData { get; set; }
}
class ItemB
{
public Guid MigrationID { get; set; }
public string MetaData { get; set; }
}
class SyncObject
{
public Guid syncID { get; set; }
public ItemA aItem { get; set; }
public ItemB bItem { get; set; }
}
void Main()
{
// setup example data
var listA = new[]
{
new ItemA { Id = Guid.NewGuid() }, // no match in listB
new ItemA { Id = Guid.NewGuid() }, // match in listB and will be in the result
new ItemA { Id = Guid.NewGuid() } // match in listB and will be in the result
};
var listB = new[] {
new ItemB { MigrationID = listA[1].Id },
new ItemB { MigrationID = listA[2].Id}
};
// the "mapping"
var result = listA.Join(listB, a => a.Id, b => b.MigrationID, (a, b) =>
new SyncObject
{
aItem = a,
bItem = b,
syncID = a.Id
});
}
并且 result
将是一个包含匹配元素的列表
我需要一些帮助来解决一个小问题: 我有一个 List a 和一个 List b。 列表 b 包含一个 MigrationID,它是 列表 a 中对象的 ID 。 现在我想匹配具有相同 MigrationID 和 ID 的对象,并从中创建一个新的 SyncObject 其中包含 obj a、obj b 和 SyncID。但我不想使用循环,因为我认为它表现不佳。
例如:
if b.MigrationID = a.ID => create new SyncObejct(SyncID, obj a, obj b)
我的代码现在看起来有点像这样:
private class SyncObject
{
private Guid syncID { get; set; }
private ItemA aItem { get; set; }
private ItemB bItem { get; set; }
}
public void SynchObjAToObjB<T, A>() where T : ItemA, new() where A : ItemB, new()
{
List<T> listA aItems;
List<A> listB bItems;
//here mapping
}
列表中都填满了数据。
谢谢!
也许是这样的:
class ItemA
{
public Guid Id { get; set; }
public string MetaData { get; set; }
}
class ItemB
{
public Guid MigrationID { get; set; }
public string MetaData { get; set; }
}
class SyncObject
{
public Guid syncID { get; set; }
public ItemA aItem { get; set; }
public ItemB bItem { get; set; }
}
void Main()
{
// setup example data
var listA = new[]
{
new ItemA { Id = Guid.NewGuid() }, // no match in listB
new ItemA { Id = Guid.NewGuid() }, // match in listB and will be in the result
new ItemA { Id = Guid.NewGuid() } // match in listB and will be in the result
};
var listB = new[] {
new ItemB { MigrationID = listA[1].Id },
new ItemB { MigrationID = listA[2].Id}
};
// the "mapping"
var result = listA.Join(listB, a => a.Id, b => b.MigrationID, (a, b) =>
new SyncObject
{
aItem = a,
bItem = b,
syncID = a.Id
});
}
并且 result
将是一个包含匹配元素的列表