Я нахожусь в процессе преобразования очень старой страницы 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](https://i.stack.imgur.com/Tiihb.png)
Текущая структура данных в таблице у вас есть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? Если так, то как бы это выглядело?
Будет ли лучший способ переписать исходный запрос?
спасибо,
ли