实体连接以在查找表中显示名称

本文关键字:显示 查找 连接 实体 | 更新日期: 2023-09-27 17:50:46

我使用EF Code第一(混合,数据库生成禁用),我有两个模型/表。我尝试选择并返回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到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();

我做错了什么?

实体连接以在查找表中显示名称

这是因为您在select子句中只选择了s。使用匿名类型声明来获取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();