如何在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'
好了,是时候完全重置了。根据聊天内容,我希望您尝试以下操作:
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();