【问题标题】:How to Iterate a Join Query in Entity Framework?如何在实体框架中迭代连接查询?
【发布时间】:2014-11-25 13:30:11
【问题描述】:

这是我的控制器:

public ActionResult Index()
        {
            DBContext_Model db = new DBContext_Model();
            var srmas = (
                            from SRMAs in db.SRMAs
                            join SRMAStatus in db.SRMAStatus on SRMAs.Id equals SRMAStatus.Id
                            join PurchaseOrders in db.PurchaseOrders on SRMAs.PONumber equals PurchaseOrders.PONumber
                            join Suppliers in db.Suppliers on PurchaseOrders.SupplierID equals Suppliers.SupplierID
                            select new {SRMAs.Id,SRMAs.PONumber,SRMAs.CreatedOn,Suppliers.SupplierName,SRMAStatus.StatusName,PurchaseOrders.PODate,PurchaseOrders.suppliersOrderNumber}
                        ).ToList();
            ViewBag.SRMAs = srmas;
            return View();
        }

现在我需要迭代结果。我应该使用什么类型来转换我的循环变量来获取期望字段?

【问题讨论】:

    标签: sql entity-framework asp.net-mvc-3


    【解决方案1】:

    您将从此查询中获得一个匿名类型列表。您不能强制转换为匿名类型,因为它只存在于运行时。

    克服这个问题的最佳方法是创建一个 ViewModel 类。唯一目的是数据传输的持久性无知类:

    public class IndexViewModel
    {
        public int SRMAsId { get; set; }
        public int PONumber { get; set; }
        // ...
    }
    

    你可以选择这个类的新实例:

    ViewBag.SRMAs = srmas.Select(srma => new IndexViewModel
                                         {
                                             SRMAsId = srma.Id,
                                             PONumber = srma.PONumber,
                                             // ...
                                         }).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多