[英]How do I map two lists to one list in Automapper?
我有以下設置:
public class ClassA
{
public int Id { get; set; }
public int JoinId { get; set; }
}
public class ClassB
{
public string Name { get; set; }
public int JoinId { get; set; }
}
public class ClassC
{
public int Id { get; set; }
public string Name { get; set; }
public int JoinId { get; set; }
}
我有一個ClassA
列表和一個ClassB
列表
我想要使用ClassC
列表。 結果應為JoinId
上的完全外部聯接。
我該如何實現?
為簡單起見,我假定它們包含在另一個類中:
class Original
{
List<ClassA> ClassAs { get; set; }
List<ClassB> ClassBs { get; set; }
}
class Result
{
List<ClassC> ClassCs { get; set; }
}
您可以使用將前者映射到后者
Mapper.CreateMap<Original, Result>().ForMember(x => x.ClassCs,
x => x.MapFrom(x.ClassAs.Join(
y.ClassBs,
xEntry => xEntry.JoinId,
yEntry => yEntry.JoinId,
(xEntry, yEntry) => new ClassC {
Id = xEntry.Id,
Name = yEntry.Name,
JoinId = xEntry.JoinId});
為什么不為它編寫代碼呢?
var listOfA = new List<A>();
var listOfB = new List<A>();
... // Code for adding values
listOfA.ToC(listOfB);
public static class OuterJoinExtension
{
public static List<C> ToC(this List<A> listOfA, List<B> listOfB)
{
var listOfC = new List<C>();
listOfA.ForEach(a => listOfB.ForEach(b =>
{
if (b.JoinId == a.JoinId)
{
listOfC.Add(new C { Id = a.Id, JoinId = b.JoinId, Name = b.Name });
}
}));
return listOfC;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.