繁体   English   中英

如何为 c# 中的每个 class 增加一个 integer 属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM