【发布时间】:2011-07-08 19:42:12
【问题描述】:
我有以下问题:我想以简洁的概览显示来自帮助台系统的工单。我还想显示数据摘要,例如按优先级和类别分组。最重要的是,必须将相同的数据转换为 .pdf 文档。
我分几个步骤检索数据。第一步是原始数据,它是 .pdf、摘要和实际概述的基础。这样,我确保他们获取相同的数据。创建 .pdf 后,我直接从数据中读取。汇总是通过展平数据进行的。概览是通过从数据中获取一页 25 条记录并将字段放入网格中来创建的。
问题是
IQueryable<RelationHoursTicketItem> HoursByTicket =
from Ticket t in allTickets
let hours = t.Bezoekrapport.Urens.
Where(h =>
(dateFrom == null || h.Datum >= dateFrom)
&& (dateTo == null || h.Datum <= dateTo)
&& h.Uren1 > 0)
select new RelationHoursTicketItem
{
Date = t.DatumCreatie,
DateSolved = new DateTime(2012, 11, 11),
Ticket = t,
Relatie = t.Relatie,
TicketNr = t.Id,
TicketName = t.Titel,
TicketCategorie = t.TicketCategorie,
TicketPriority = t.TicketPrioriteit,
TicketRemark = t.TicketOpmerkings.SingleOrDefault(tr => tr.IsOplossing)
};
问题出在 TicketRemark 中。执行数据后,我会收到数十个子查询,因为 TicketOpmerkings(TicketRemarks 的荷兰语)被逐个检索到。最初的意图是创建一个 IQueryable,它将作为所有其他查询的基础。我已经竭尽全力来实现这一点,创建自定义表达式来计算我从这个示例中删除的某些字段。
最好的方法是什么?为所有这些链接编写表达式,例如 t.TicketOpmerkingen?它将删除 LINQ 的一些最佳功能。到目前为止,我看到的解决方案包括手动创建表达式,但我也可以放弃这种方法并进行多个查询,每个查询都有其特定目的。然后我放弃了 LINQ 和 IQueryable 的简洁的“分层”方法。
有人有这方面的经验吗?
【问题讨论】:
标签: c# .net linq-to-sql