[英]Getting data from foreign key table using LINQ
I've 2 tables 我有2张桌子
DeviceType Table 设备类型表
id Name
1 Device Type 1
2 Device Type 2
Device Table 设备表
id Name Device Type Id (fk)
1 Device1 1
2 Device2 1
3 Device3 2
What I want is to query the data from device table with device type name using LINQ Methods
. 我想要的是使用LINQ Methods
从具有设备类型名称的设备表中查询数据。 I couldn't find the Include
method to use here. 我找不到要在此处使用的Include
方法。
I'm trying to get this in result 我正在努力做到这一点
id Name DeviceType Name
1 Device1 Device Type 1
2 Device2 Device Type 1
3 Device3 Device Type 2
var device = from g in db.Devices
join m in db.DeviceType on g.DeviceTypeId equals m.Id
select new
{
Id = g.Id,
Name = g.Name,
DeviceTypeName = m.Name
};
Or you can try something like 或者您可以尝试类似
var device = db.Devices
.Join(db.DeviceType,
g => g.Id, // Device Table Id
m => m.Id, // DeviceType Table Id
(g, m) => new {
Id = g.Id,
Name = g.Name,
DeviceTypeName = m.Name
})
.Where(deviceTyp => deviceTyp.g.ID == Id);
// where condition for g.DeviceTypeId equals m.Id
You do not need to use .Include
unless you want to get the related entities as well. 您无需使用.Include
除非您也想获取相关的实体。 You can do something like this: 您可以执行以下操作:
context.Devices.Where(your conditions here)
.Select(d=>new {Id = d.id, Name = d.Name, DeviceTypeName = d.DeviceType.Name})
You do not need to do join
since there's a FK relationship (looks like that from the question), EF should pick up the relationship 由于存在FK关系,因此您无需join
(看起来像问题中的那样),EF应该选择该关系
List<DeviceType> deviceTypeList = new List<DeviceType>() {
new DeviceType { id = 1, Name = "Device Type 1" },
new DeviceType { id = 2, Name = "Device Type 2" } };
List<Device> deviceList = new List<Device>() {
new Device { id = 1, Name = "Device1", DeviceTypeId = 1 },
new Device { id = 2, Name = "Device2", DeviceTypeId = 1 },
new Device { id = 3, Name = "Device3", DeviceTypeId = 2 } };
//Linq
var query = from device in deviceList
join type in deviceTypeList
on device.DeviceTypeId equals type.id
select new { Id = device.id, Name = device.Name,
DeviceTypeName = type.Name };
//Or lambda expressions
var query = deviceList.Join(deviceTypeList,
device => device.DeviceTypeId,
type => type.id,
(device, type) => new { Id = device.id, Name = device.Name,
DeviceTypeName = type.Name });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.