如何在c#中为List中的每个类增加整数属性



我有一个类如下:

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将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为每个员工。

现在我想让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++;
}
});

对不起,请忽略输入错误,因为我没有编译代码。但概念上应该是相似的。

最新更新