简体   繁体   中英

Split a string value in list using linq

I have a list with a column value like "0000000385242160714132019116002239344.ACK" i need to take last 6 digits from this value like "239344" without extension(.ack) when binding to the list. And i need to find the sum of Salary field also.

My query looks like below.

var result = from p in Context.A
                             join e in B on p.Id equals e.Id
                             join j in Context.C on e.CId equals j.CId
                             where (e.Date >= periodFrom && e.Date <= periodTo)
                             group new
                             {
                                 e,
                                 j
                             } by new
                             {
                                 j.J_Id,
                                 e.Date,
                                 e.Es_Id,
                                 e.FileName,
                                 j.Name,
                                 e.ACK_FileName,
                                 p.EmpSalaryId,
                                 p.Salary
                             } into g
                             orderby g.Key.CId, g.Key.Es_Id, g.Key.Date, g.Key.FileName
                             select new
                             {
                                 CorporateId = g.Key.CId,
                                 ProcessedDate = g.Key.Date,
                                 EstID = g.Key.Es_Id,
                                 FileName = g.Key.FileName,
                                 Name = g.Key.Name,
                                 ack = g.Key.ACK_FileName,
                                 EmpSalaryId = g.Key.EmpSalaryId,
                                 Salary=g.Key.Salary
                             };

var Abc=result.ToList();
var result = (from p in Context.A
             join e in B on p.Id equals e.Id
             join j in Context.C on e.CId equals j.CId
             where (e.Date >= periodFrom && e.Date <= periodTo)
             group new { e, j } by new
             {
                 j.J_Id,
                 e.Date,
                 e.Es_Id,
                 e.FileName,
                 j.Name,
                 ACK_FileName = e.ACK_FileName.Substring(e.ACK_FileName.IndexOf(".ACK") - 7, 11),
                 p.EmpSalaryId,
                 p.Salary
             } into g
             orderby g.Key.CId, g.Key.Es_Id, g.Key.Date, g.Key.FileName
             select new
             {
                 CorporateId = g.Key.CId,
                 ProcessedDate = g.Key.Date,
                 EstID = g.Key.Es_Id,
                 FileName = g.Key.FileName,
                 Name = g.Key.Name,
                 ack = g.Key.ACK_FileName,
                 EmpSalaryId = g.Key.EmpSalaryId,
                 Salary = g.Sum(item => item.Salary)
             }).ToList();

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