Một kỹ sư mẫu:
public class engineers
{
public Guid? Guid { get; set; }
public string Name { get; set; }
}
tôi điền vào một danh sách các kỹ sư với các chi tiết chính xác:
List<engineers> listeng = new List<engineers>();
listeng.Add(new engineers { Name = profile.FirstName + " " + profile.LastName, Guid = GuidEngineer });
Cho đến nay rất tốt.
Câu hỏi của tôi làm thế nào tôi có thể kéo tên kỹ sư để mục eng dưới đây:
var tickets = from o in new HelpdeskEntities().Tickets.Where(t => t.TicketState.State == "Open")
select new AjaxTickets
{
TicketID = o.TicketID,
TicketSubject = o.TicketSubject,
ClientCompanyName = o.ClientCompany.ClientCompanyName,
DateOpened = o.DateOpened,
**eng** = list.Where(x => x.Guid == o.EngineerID).Select(x => new engineers {Guid = x.Guid, Name=x.Name }).FirstOrDefault().Name
};
Tôi cũng đã thử
var tickets = from o in new HelpdeskEntities().Tickets.Where(t => t.TicketState.State == "Open")
select new AjaxTickets
{
TicketID = o.TicketID,
TicketSubject = o.TicketSubject,
ClientCompanyName = o.ClientCompany.ClientCompanyName,
DateOpened = o.DateOpened,
**eng** = list.Where(x => x.Guid == o.EngineerID).Select(x => x.Name }).FirstOrDefault()
};
Các lỗi tôi nhận được là:
Unable to create a constant value of type 'Helpdesk2.ViewModel.engineers'. Only primitive types ('such as Int32, String, and Guid') are supported in this context."}
Tôi rất hiểu nhưng không thể tìm ra chỉ để chọn tên kỹ sư.
Cảm ơn trước
Bạn không thể sử dụng 'danh sách' trong truy vấn LINQ-to-entity. Chỉ có dữ liệu có sẵn trong cơ sở dữ liệu mới có thể được sử dụng. Bạn không thể tùy ý kết hợp linq-to-objects và linq-to-entity vì EF không biết cách dịch nó thành SQL. Sử dụng cách giải quyết của @ harriyott và điền vào 'Name' sau khi bạn tải vé từ cơ sở dữ liệu. –