如何在ASP中为两个类编写LINQ连接.净MVC4

本文关键字:两个 LINQ MVC4 连接 ASP | 更新日期: 2023-09-27 17:49:38

我在使用EF Code首先从连接表访问属性时遇到了麻烦。以下是我在home controller中的查询:

var pcs = from h in db.Hardwares
    join hwt in db.HardwareTypes 
    on h.HardwareTypeId equals hwt.Id
    where h.HardwareType.HType == "PC"
    select new { Hardware = h, HardwareType = hwt };   
ViewBag.Pcs = pcs.ToList();

这是我的HardwareTypes类:

public class HardwareType
    {
        public int Id { get; set; }
        //[Required]
        //[StringLength(128)]
        public string HType { get; set; }
    }

这是我的Hardware类:

public class Hardware
    {
        public int Id { get; set; }
        public int HardwareTypeId { get; set;}
        public virtual HardwareType HardwareType { get; set; } 
    }

我如何改变我的LINQ查询,使HType在我的ViewBag ?数据库似乎正在正确生成,只是我似乎无法访问HType。我得到一个错误'object' does not contain a definition for 'HType'

如何在ASP中为两个类编写LINQ连接.净MVC4

好了,是时候完全重置了。根据聊天内容,我希望您尝试以下操作:

1)保留原来的LINQ查询,但不要使其成为匿名类型。创建另一个对象类型,其中将包含Hardware和HardwareType属性。这将使pc(以及ViewBag.Pcs)成为特定类型的List。

2)在View代码中放入以下foreach循环:

foreach (var item in ViewBag.Pcs as List<YourTypeName>)
{
   var htype = item.HardwareType.HType;
}

如果你不想在每次循环中都延迟加载,你可以在控制器中执行以下操作来立即加载实体:

var hardwareTypes = pcs.Select(p => p.HardwareType).ToList();