asp.net mvc linq我想从两个联接表中获取两列

asp.net mvc linq我想从两个联接表中获取两列,linq,asp.net-mvc-4,Linq,Asp.net Mvc 4,我有两个表与PrId column连接,我有一个视图显示两个表中的两列,第一个表中的第一列和第二个表中的第二列。我的结果是: public ActionResult extrapoints() { ViewBag.dList = (from m in _session.customer join p in _session.Products on m.PrId equals p.PrId

我有两个表与PrId column连接,我有一个视图显示两个表中的两列,第一个表中的第一列和第二个表中的第二列。我的结果是:

public ActionResult extrapoints()
        {
            ViewBag.dList = (from m in _session.customer
                            join p in _session.Products on m.PrId equals p.PrId
                            where m.UserId== 'john'
                             select new { FName = m.FName, price=p.price}); 


            return View();
        }
鉴于我想展示FName和price,我有以下观点:

@foreach(ViewBag.dList中的变量项) {


@item.FName
@项目.价格
} 但是is show error object’不包含FName的定义,但是当我在没有FName的情况下使用时,类似于price

@foreach (var item in ViewBag.dList)
{

      <tr>

        <td>@item</td>
        <td> @item</td>
       </tr>


}
@foreach(ViewBag.dList中的变量项)
{
@项目
@项目
}
信息系统显示: {FName=Shailendra,price=1000}


如何解决,请帮助

您可以将匿名类转换为类型化类,首先添加此类

  class Test
    {
        public string FName { get; set; }
        public decimal price { get; set; }

    }
让你像我一样

 ViewBag.dList = (from m in _session.customer
                            join p in _session.Products on m.PrId equals p.PrId
                            where m.UserId== 'john'
                             select new Test{ FName = m.FName, price=p.price}); 
最后将viewpage强制转换为类型“Test”

@foreach(列表)ViewBag.dList中的变量项)
{
@项目名称
@项目.价格
}
 ViewBag.dList = (from m in _session.customer
                            join p in _session.Products on m.PrId equals p.PrId
                            where m.UserId== 'john'
                             select new Test{ FName = m.FName, price=p.price}); 
@foreach (var item in (List<Test>)ViewBag.dList)
{

      <tr>

        <td>@item.Fname</td>
        <td> @item.price</td>
       </tr>


}