use*_*881 6 asp.net-mvc entity-framework
我有以下内容
工程师模型:
public class engineers
{
public Guid? Guid { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我在工程师名单中填写正确的详细信息:
List<engineers> listeng = new List<engineers>();
listeng.Add(new engineers { Name = profile.FirstName + " " + profile.LastName, Guid = GuidEngineer });
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
我的问题如何将工程师名称拉到下面的eng条目:
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
};
Run Code Online (Sandbox Code Playgroud)
我也试过了
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()
};
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
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."}
Run Code Online (Sandbox Code Playgroud)
我有点理解,但不能弄清楚只是为了选择工程师的名字.
提前致谢
您应该能够将第一个简化为:
list.FirstOrDefault(x => x.Guid == o.EngineerID).Name
Run Code Online (Sandbox Code Playgroud)
话虽如此,实体框架可能不会让您在运行数据库调用时运行它。如果您可以从工单到工程师创建外键,那么您可以按照与客户公司名称相同的方式选择它。如果没有,那么您需要分两步进行:首先,运行选择而不填充工程师姓名属性,然后,用以下内容填充它们:
tickets.ForEach(ticket => ticket.EngineerName = engineers.First(eng => eng.Guid == ticket.EngineerID).Name)
Run Code Online (Sandbox Code Playgroud)
显然,您需要添加 EngineerID 属性并在第一步中选择它。
| 归档时间: |
|
| 查看次数: |
4925 次 |
| 最近记录: |