简体   繁体   中英

How can I get latest employee ID (string) from the list of employees using .net web api Get call

I am using Entity Framework My EmployeeDto class is :

public class EmployeeDto
    {
        [DataMember]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int SerialNumber { get; set; }
        [DataMember]
        [Key]
        [Required]
        public string ID { get; set; }
        [DataMember]
        [Required]
        public string FirstName { get; set; }
        [DataMember]
        public string MiddleName { get; set; }
        [DataMember]
        [Required]
        public string LastName { get; set; }
}

My Dto class is EmployeeDto and Dal class is named as Employee. I want to get the maximum value of EmployeeID from the database and provide it to frontend through Get call .

My Get call to get the list of all employees is :

public List<EmployeeDto> GetAllEmployees()
        {
            var employeeDto = new List<EmployeeDto>();
            using (EmployeeDataEntities entities = new EmployeeDataEntities())
            {
                var employeeData = entities.Employees.ToList().Where(e => e.IsActive == true);

                List<Employee> emp = employeeData.ToList(); 
                //emp.FindLastIndex(e => e.)
                employeeDto = Mapper.Map<List<Employee>,List<EmployeeDto>>(emp);
            };
            return employeeDto;
        }

This is my GetLatestEmployeeByID code :

public int GetEmployeeLatestID(EmployeeDto employeeDto)
        {
            using (EmployeeDataEntities entities = new EmployeeDataEntities())
            {
                var employeeData = entities.Employees.ToList().Where(e => e.IsActive == true);
                List<Employee> emp = employeeData.ToList();
                emp.FindLastIndex(e => e.ID);                              
            }
        }

I have tried a couple of solutions and i end up with this one:

var a = new List<EmployeeDto>()
        {
            new EmployeeDto()
            {
                SerialNumber = 1,
                ID = "AB01",
                FirstName = "Ala",
                MiddleName = "b",
                LastName = "ala"
            },
            new EmployeeDto()
            {
                  SerialNumber = 2,
                ID = "AB02",
                FirstName = "Ala",
                MiddleName = "b",
                LastName = "ala"
            },new EmployeeDto()
            {
                  SerialNumber = 3,
                ID = "AB03",
                FirstName = "Ala",
                MiddleName = "b",
                LastName = "ala"
            }
        };

        // biggestIdAsInt = 230 a.max returns the max value after the calculations 
        var biggestIdAsInt = a.Max(employee => Encoding.ASCII.GetBytes(employee.ID) // get Employee Id as byte array
        .Sum(b => b)); // summ the bytes for each employee 

        // 230


var substractedNumberFromBiggestId = Regex.Match(a.FirstOrDefault(x => x.ID.ToCharArray().Sum(y => y) == biggestIdAsInt).ID, @"\d+").Value;
        Console.WriteLine(substractedNumberFromBiggestId);

I have put comments to make the code a little bit clearer.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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