Как написать LINQ для этих данных - PullRequest
0 голосов
/ 01 ноября 2019

Я нахожусь в процессе преобразования очень старой страницы ASP в APSX. Данные находятся в БД Oracle. Я уже запустил выбор и загрузил его в таблицу данных. Выбор, который я использовал, взят с предыдущей страницы asp. Это выглядит так:

select StepId,d.name,c.requisitionentryid,c.requisitionid, NVL(a.starteddate,'') as submitdate, 
NVL(c.closeddate,'') as closeddate,c.STATUSID,
(Select b.FirstName || ' ' || b.LastName as UserName from DirPerson b where A.ownerid = b.PERSONID ) 
as Initiator,
(Select b.FirstName || ' ' || b.LastName as UserName from DirPerson b where A.CUSTOMERID = 
b.PERSONID) as Customer,
TxActivity.ActivityID        as ActivityID,
TxActivity.CustomerID        as CustomerID,
TxActivity.PerformerID       as PerformerID,
TxActivity.ActivityTypeId       as ActivityTypeId,
NVL(TxActivity.CompletedOn,'')   as approvercompletedon,
TxActivity.TicketObjectID    as TicketObjectID,
(select FirstName          from DirPerson where PersonID=TxActivity.PerformerID )  as 
ApproverFirstName,
(select LastName           from DirPerson where PersonID=TxActivity.PerformerID ) as 
ApproverLastName, 
e.COMPLETEDACTIONID,NVL(TxActivity.Startedon,'') as Startedon 

from txrequisition A,txrequisitionentry c,defservice d, TxActivity, txactivityassignment e 
where " + Where + "  and a.requisitionid = c.requisitionid and TxActivity.ActivityID  = 
e.ActivityID(+) and c.serviceid = d.serviceid

and c.RequisitionEntryID=TxActivity.TicketID and TxActivity.TicketObjectID=37
and ((TxActivity.StepId =5 or TxActivity.StepId =4 or TxActivity.StepId =0))

В конечном итоге я хочу, чтобы данные выглядели примерно так: Example

Текущая структура данных в таблице у вас есть2 строки для этой единственной заявки. По одному на каждого утверждающего, поэтому мой запрос LINQ выглядит следующим образом:

                    var distinctIds = dataTable.AsEnumerable()
                .Select(s => new
                {
                    id = s.Field<decimal>("Requisition"),
                    Name = s.Field<string>("Service Name"),
                    Initiator = s.Field<string>("Initiator"),
                    Customer = s.Field<string>("Customer"),
                    SubmitDate = TimeZoneInfo.ConvertTimeFromUtc(s.Field<DateTime>("SubmitDate"), cstZone),
                    ClosedDate = s.Field<DateTime?>("ClosedDate") == null ? "": TimeZoneInfo.ConvertTimeFromUtc(s.Field<DateTime>("ClosedDate"), cstZone).ToString(),
                    Status = s.Field<decimal>("StatusId") == 1 ? "Ongoing" :
                            s.Field<decimal>("StatusId") == 2 ? "Closed" :
                            s.Field<decimal>("StatusId") == 3 ? "Cancelled" :
                            s.Field<decimal>("StatusId") == 4 ? "Rejected" : "?",
                    Approvers = "....",

                })
                .Distinct().ToList();

Я столкнулся с проблемой, как получить утверждающих. Является ли лучший способ написать дополнительный выбор для утверждающих в текущем операторе LINQ? Если так, то как бы это выглядело?

Будет ли лучший способ переписать исходный запрос?

спасибо,

ли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...