我刚刚学习MVC,这是我的第一个项目。我正在创建的是我公司的服务台。现在我正在处理添加门票。
我试图让它发挥作用的方式是我们有一个用户选择的“Microsoft Office”等票类。每个类别都附有技术人员。因此,当用户选择类别时,应该自动分配技术人员。这是我目前的代码:
public ActionResult Create(NewTicket newTicket)
{
Ticket ticket = new Ticket();
TicketNote ticketNote = new TicketNote();
try
{
Guid ticketGuid = System.Guid.NewGuid();
//Add Ticket
ticket.TicketId = ticketGuid;
//ticket.TicketNumber =
ticket.CategoryId = newTicket.CategoryId;
ticket.OpenUserId = new Guid("999600FC-709E-4463-84AD-D26894BABB54");
ticket.OpenDate = DateTime.Now;
ticket.TechnicianId = from c in db.Categories
where c.CategoryId == newTicket.CategoryId
select c.PrimaryTechnicianId;
ticket.TicketStatusId = new Guid("00000000-0000-0000-0000-000000000000");
//ticket.CloseDate = DateTime.Now;
tickets.Insert(ticket);
tickets.Commit();
//Add Ticket Note
ticketNote.TicketNoteId = System.Guid.NewGuid();
ticketNote.TicketId = ticketGuid;
ticketNote.TicketNoteDate = DateTime.Now;
ticketNote.Note = newTicket.TicketNote;
ticketNotes.Insert(ticketNote);
ticketNotes.Commit();
return RedirectToAction("Index");
}
//catch(Exception ex)
catch
{
return View();
}
}
我遇到的问题特别在于这一行(其余的工作):
ticket.TechnicianId = from c in db.Categories
where c.CategoryId == newTicket.CategoryId
select c.PrimaryTechnicianId;
我一直得到的错误是'错误1无法在上一行的select语句中隐式转换类型'System.Linq.IQueryable'为'System.Guid'
答案 0 :(得分:1)
我相信,这个LINQ:
from c in db.Categories where c.CategoryId == newTicket.CategoryId
select c.PrimaryTechnicianId;
将返回IEnumerable
,因此,为了分配给ticket.TechnicianId
,您应该继续致电First
或Single
,如下所示:
ticket.TechnicianId = (from c in db.Categories
where c.CategoryId == newTicket.CategoryId
select c.PrimaryTechnicianId).Single();
答案 1 :(得分:0)
您是否应该覆盖TechnicianId
?
ticket.TechnicianId = from c in db.Categories
where c.CategoryId == newTicket.CategoryId
select c.PrimaryTechnicianId;
ticket.TechnicianId = new Guid("00000000-0000-0000-0000-000000000000");
select
只是说明哪些字段退出类别对象但仍然会返回IQueryable<T>
。要获得Guid
,您需要事后致电.First()
或.Single()
,以便从IQueryable<T>
中获取1个对象。
我建议拨打.Single()
,因为如果您有一个超过1 CategoryId
的类别列表,则会出现错误。
First()
会从列表中返回一个项目。 Single()
期望只有一个项目,如果不存在则会产生错误。
我建议您阅读我对此question
的回答