[英]How to increment an integer property for every class inside List in c#
我有一个 class 如下:
public class DBEmployee
{
public Guid EmpId {get;set;}
public string Name {get;set;}
public int IncrementNo {get;set;}
}
public class C#Employee
{
public Guid EmpId {get;set;}
public string Name {get;set;}
public int IncrementNo {get;set;}
}
假设我从数据库中获取了员工列表并将其绑定到变量 listOfEmployees,如下所示:
var listOfEmployees = new List<DBEmployee>
{
new DBEmployee {
EmmId = "e31d712a-7d5c-4b1c-99a8-306f9aebbfa0",
Name = "AAA",
IncrementNo = 0
},
new DBEmployee {
EmmId = "87c4feed-20e7-42b2-8a95-8acb0743fdfe",
Name = "BBB",
IncrementNo = 0
},
new DBEmployee {
EmmId = "90cdd219-8796-4d51-bfe1-add8515315c5",
Name = "CCC",
IncrementNo = 0
},
}
现在我使用 AutoMapper 到 map DBEmployee 到 C#Employee,如下所示:
var config = new MapperConfiguration(cfg => cfg.CreateMap<DBEmployee, C#Employee>()
.AfterMap((src, dest) => dest.IncrementNo= dest.IncrementNo+ 1)
);
var mapper = new Mapper(config);
var c#Emps = mapper.Map<List<C#Employee>>(listOfEmployees);
我试过上面的格式,但它总是让每个员工的 IncrementNo 都为 1。
现在我希望每个员工 object 的 IncrementNo 属性递增 +1,例如员工姓名 AAA 应包含 IncrementNo=1,员工姓名 BBB 应包含 IncrementNo=1,员工姓名 CCC 应包含 IncrementNo=3。
我可以通过使用 Foreach 循环来实现这一点,如下所示:
var lR = 0;
c#Emps.ForEach(x =>
{
x.IncrementNo= lR + 1;
lR++;
});
但我只想在配置 AutoMapper 本身时以更好的方式尝试,而不是使用 ForEach 的代码行更多
有人可以帮我吗?
你试过这个吗?
Mapper.CreateMap<DBEmployee, C#Employee>()
.AfterMap((src, dest) =>
{
int incrementNo = 1;
foreach (var employee in listOfEmployees)
{
employee.IncrementNo = incrementNo++;
}
});
对不起,请忽略输入错误,因为我还没有编译代码。 但从概念上讲,它应该是相似的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.