Linq to Entities加入以在查找表中显示名称

时间:2015-05-26 19:26:26

标签: c# linq entity-framework

我正在使用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();

我做错了什么?

1 个答案:

答案 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();