我正在使用EF Code First(混合,数据库生成已禁用),我有两个模型/表。我尝试选择并返回T1中的所有值和参考/查找表中的一个字段,这样我就可以对列表执行过滤而无需重新查询数据库。我需要有ItemName的值,所以我可以进行比较。
如果我使用SQL,我会做这样的事情:
SELECT s.*, im.ItemName
FROM Specs s
INNER JOIN ItemMake im ON s.ItemMakeID = im.ID
我的课程看起来像这样:
public class Spec {
public int ID {get; set;}
public int ItemMakeID {get; set;}
[ForeignKey("ItemMakeID")]
public ItemMake itemMake {get; set;}
}
public class ItemMake {
public int ID {get; set;}
public string ItemName {get; set;}
}
目前我的Linq to EF查询看起来像这样。它不起作用。我不能像我需要的那样得到ItemName属性。
var specs = (from s in db.Specs
join im in db.ItemMakes on s.ItemMakeID equals im.ID
orderby s.modelNo select s).ToList();
我做错了什么?
答案 0 :(得分:2)
那是因为您只在s
子句中选择了select
。使用匿名类型声明来获取ItemName
:
var specs = (from s in db.Specs
join im in db.ItemMakes on s.ItemMakeID equals im.ID
orderby s.modelNo select new { s, im.ItemName }).ToList();