我有一个Linq查询,我当前拉出一个表,然后在视图中我过滤5连接到一个特定的值。这很多人都知道会大大增加我的视图加载的时间,因为每个记录必须为每个连接运行自己的单独查询。我想将连接切换到Linq查询,所以它在一个查询中,但我遇到了麻烦。
这是我的控制器代码:
private IEnumerable<Ticket> FindTechTickets(Guid ticketStatusId)
{
Guid g = Guid.Parse(Session["LoggedUserID"] as string);
return db.Tickets
.Include(t => t.TicketNotes)
.Where(t => t.TechnicianId == g).Where(t => t.TicketStatusId == ticketStatusId)
.OrderByDescending(t => t.TicketNumber)
.ToList();
}
这是我的观看代码:
@foreach (var item in Model.OrderByDescending(m => m.TicketNumber))
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.TicketNumber)
</td>
<td>
@Html.DisplayFor(modelItem => item.OpenDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.OpenUser.FullName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Category.CategoryName)
</td>
<td>
<div>
@Html.DisplayFor(modelItem => item.TicketNotes.OrderBy(t => t.TicketNoteDate).Last().TicketNoteDate)
</div>
</td>
<td>
<div>
@Html.DisplayFor(modelItem => item.TicketNotes.OrderBy(t => t.TicketNoteDate).Last().UserNote.FullName)
</div>
</td>
<td>
<div style="overflow:auto; width:300px;">
@Html.DisplayFor(modelItem => item.TicketNotes.OrderBy(t => t.TicketNoteDate).First().Note)
</div>
</td>
<td>
@Html.ActionLink("Open/Edit", "EditTechTicket", new { id = item.TicketId, returnUrl = "TechOpenTickets", ViewBag.page})
</td>
</tr>
}
这是我尝试更改Linq查询:
var ts =
from t in db.Tickets
Join tn in db.TicketNotes on t.TicketId equals tn.TicketId
Where(t => t.TechnicianId == g).Where(t => t.TicketStatusId == ticketStatusId)
OrderByDescending(t => t.TicketNumber)
select new
{
}
问题是几乎每一行都会出现构建错误。从Join行开始。
这是我从以下网站获取信息的链接:
Pulling out different columns from different tables using LINQ
答案 0 :(得分:0)
您似乎错过了一些括号。
Join
不是您正在寻找的方法。它完全不同。你想要Include
。