C# 从另一个表的外键获取记录列表

C# 从另一个表的外键获取记录列表,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我不熟悉实体框架,正在尝试从另一个表的外键获取实体模型。下面的代码是我如何知道如何获得模型列表的,但我不想要具有fk1的模型。我想要那些模型的模型外键参考。我知道我可以在获得列表后迭代这些模型,并从那里访问外键,但如何才能立即从实体中获取它们呢 List<Entity.Models.myModel> myModels = context.myModels .Where(r => r.fk1 == fk1) .ToList(); List myModels=conte

我不熟悉实体框架,正在尝试从另一个表的外键获取实体模型。下面的代码是我如何知道如何获得模型列表的,但我不想要具有fk1的模型。我想要那些模型的模型外键参考。我知道我可以在获得列表后迭代这些模型,并从那里访问外键,但如何才能立即从实体中获取它们呢

List<Entity.Models.myModel> myModels = context.myModels
  .Where(r => r.fk1 == fk1) 
  .ToList();
List myModels=context.myModels
.其中(r=>r.fk1==fk1)
.ToList();

我想要的是一个myModels[I]的列表。很抱歉造成混淆。

如果我理解您需要的是:

db.myModels.Include("myForeignModel").Where(r => r.name.contains("h")).toList
这将返回一个名为“h”的模型列表,所有这些模型都将为eaxample加载一个示例模型

public class Parent
{
    public int id {get; set;}
    public string name {get;set;}
    public int childId {get;set;
    public virtual child child {get;set;}
}

public class child
{
   public int id {get; set;}
   public string name {get;set;}

}
现在让我们假设你有一张桌子给父母,另一张桌子给孩子

public dbset<parent> parents {get;set;}
public dbset<child> children {get;set;}

也许你正在寻找这样的东西:

List<Customer> customers = context.Orders
    .Where(o => o.ShippingTypeId == givenShippingTypeId) // your fk1
    .Select(o => o.Customer) // your foreignKey2 ???
    .Distinct() // To eliminate duplicate customers in the result
    .ToList();
给定一个
订单
实体,该实体引用了
发货类型
客户

public class Order
{
    public int OrderId { get; set; }
    public int ShippingTypeId { get; set; }
    public ShippingType ShippingType { get; set; }
    public int CustomerId { get; set; }
    public Customer Customer { get; set; }
}
…您希望检索具有给定装运类型ID的订单的所有客户。然后查询可能如下所示:

List<Customer> customers = context.Orders
    .Where(o => o.ShippingTypeId == givenShippingTypeId) // your fk1
    .Select(o => o.Customer) // your foreignKey2 ???
    .Distinct() // To eliminate duplicate customers in the result
    .ToList();
List customers=context.Orders
.Where(o=>o.ShippingTypeId==givenShippingTypeId)//您的fk1
.Select(o=>o.Customer)//您的外键2???
.Distinct()//以消除结果中的重复客户
.ToList();

如果要同时获取实体及其fk表,可以使用“Include”即:List myModels=context.myModels.Where(r=>r.foreignKey==foreignKey)。Include(“NameOfOtherTable”).ToList();但是给定的外键值只引用一个对象(其主键值与给定的外键值相同),您可以使用
context.MyReferencedModels.Find(foreignKey)加载该对象。我可能误解了这个问题…@Slauma我完全把我的问题搞砸了,如果这是我想说的话,你是对的。我道歉。我更新了问题以反映我的真实问题。我仍然不明白。什么是外键2
?我想如果你能用一个真实的模型来说明问题,那会有帮助。这就是我想要的。谢谢