【发布时间】:2020-12-30 14:47:55
【问题描述】:
正在执行此查询以从各自的产品相关表中获取区域和类别名称。
SELECT
Categoria.NombreCategoria,
Zona.ZonaGrupo,
p.NombreProducto,
p.ProductoTiene,
p.RealizadosEvento,
p.FechaInicial,
p.FechaFin
FROM
Productos p
INNER JOIN
Categoria ON p.CategoriaId = Categoria.Id
INNER JOIN
Zona ON p.ZonaId = Zona.ZonaId
SQL 查询的结果返回 products 表必须具有的 1000 条记录及其区域和类别。
在 linq 中执行以下操作时,它只返回 8 条记录...
IQueryable<ProductosViewModel> ProductosMaped =
from p in Db.Productos
join g in Db.Zona on p.ZonaId equals g.ZonaId
join acr in Db.Categoria on p.CategoriaId equals acr.Id
select new ProductosViewModel
{
Categoria = acr.NombreCategoria,
ZonaGrupo = g.ZonaGrupo,
NombreProducto = p.NombreProducto,
ProductoTiene = p.ProductoTiene,
RealizadosEvento = p.RealizadosEvento,
FechaInicial = p.FechaInicial,
FechaFin = p.FechaFin,
};
我只需要链接这 2 个表,以便列表只显示 CategoryName 和 ZoneName 或 Group Zone。
【问题讨论】:
-
你在使用实体框架吗?如果是这样,您不需要在 Linq 中使用
join,只需使用导航属性即可。 -
请贴出EF生成的SQL。您可以使用
IQueryable<T>.ToString()或Db.Database.Log看到它。
标签: c# linq sql-server-2012