asp.net-mvc如何访问新物品联合使用 linq 的 asp.net MVC 中的列

标签: Asp.net-MVC Linq C#
发布时间: 2017/3/25 9:46:54
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我面临在视图显示的列字段值的问题。

我还像如下的视图。

var TicketList = (from T in db.Tickets
                  where  T.Title.Contains("a")
                  select new {
                        customerName = (
                             from cname in db.Customers
                             where cname.CustomerId == T.CustomersId
                             select cname.FirstName + cname.LastName
                        ) ,
                        Title = T.Title
                  }).ToList();

 return View("SearchTicketsResult",TicketList);

在视图页我有

<%foreach (TicketList ti in (IEnumerable)ViewData.Model) {%>
    <%=ti.Title%><br />
    <%=ti.customerName %>
<% } %>

我不能够列出 customername 或在页面中的标题。它说:"找不到 'TicketList' 的类型或命名空间名称 (是否缺少 using 指令或程序集引用?)"

有人可以请指导我。

在此先感谢。

解决方法 1:

"TicketList"是一个匿名类型列表的变量名称。没有"TicketList"类型。从匿名类型铸造可以做 ("以身作则"),而是脆,我只是不推荐你使用匿名类型为此。

一种选择是,例如宣布我自己喜欢的类型 (在用户界面的"模型"文件夹中)- TicketSummary / TicketLite (等等),与 TitleCustomerName 。然后使用类型︰

public class TicketSummary
{

     public string CustomerName { get; set; }
     public string Title { get; set; }
}

var ticketList = (from t in db.Tickets
                  where  t.Title.Contains("a")
                  select new TicketSummary
                  {
                      CustomerName = (
                          from cname in db.Customers
                          where cname.CustomerId == t.CustomersId
                          select cname.FirstName.ToString()
                      ).FirstOrDefault(),
                      Title = t.Title
                  }).ToList();
return ticketList;

然后你应该能够使用︰

<%foreach (TicketSummary ts in (IEnumerable<TicketSummary>)ViewData.Model) {%>
    <%=ts.Title%><br />
    <%=ts.customerName %>
<% } %>

在现实中,我可能卸载存储库中,这项工作,有一个返回的汇总类型列表的存储库方法。

赞助商