【问题标题】:Linq to 3 tables with no foreign keysLinq 到 3 个没有外键的表
【发布时间】:2015-06-30 02:31:50
【问题描述】:

我有 3 个没有外键的表(这是一个遗留数据库,所以我无法更改)。 该模型将是这样的(sql代码):

Select 
    PROD.ProductoId, 
    PROD.Descripcion,
    STK.StockActual,
    DEPO.DepositoId,
    DEPO.Descripcion
From 
     Productos  PROD, 
     Stock      STOK, 
     Depositos  DEPO
where 
    PROD.ProductoId = STOK.ProductoId
    and  DEPO.DepositoId = STOK.DepositoId

如何在 C# 上使用 Linq 获得相同的结果?

【问题讨论】:

  • 离题建议:明确指定表连接,即使用JOIN 语法:… FROM Productos PROD JOIN Stock STOK ON PROD.ProductoId = STOK.ProductoId JOIN Depositos DEPO ON DEPO.DepositoId = STOK.DepositoId。请参阅this Programmers SE Q & A 了解这样做的原因。

标签: sql sql-server linq


【解决方案1】:

试试这个:

var result = from prod in _context.Productos
             join stok in _context.Stocks on prod.ProductoId equals stok.ProductoId
             join depo in _context.Depositos on stok.DepositoId equals depo.DepositoId
             select new
             {
                 ProductoId = prod.ProductoId,
                 ProductoDescripcion = prod.Descripcion,
                 StockActual = stok.StockActual,
                 DepositoId = depo.DepositoId,
                 DepositoDescripcion = depo.Descripcion
             };

【讨论】:

  • 我会尝试一下,然后我会发布结果!谢谢!!
  • 当然,我不确定它是否正确。我自己刚开始使用 linq。
  • 我认为在第一次加入后,您应该选择 PROD.ProductoId、PROD.Description、STK.StockActual、STOK.DepositoId 到新表中,并将新表与存款表连接
  • @NamBình,在我的回答中添加select 部分。
【解决方案2】:

你为什么不在 Sql 中创建一个视图,然后更新你的模型,这样你就可以从视图类中查询。

【讨论】:

  • Tks 但我无法在数据库中创建任何内容,因为来自第三方系统。
【解决方案3】:

试试这个:

var Query = from data in _db.Productos  
join stock in _db.Stock on data.ProductId equals stock.ProductoId
join Depositos in _db.Depositos on data.DepositoId equals Depositos.DepositoId
select new { ProductoId,Descripcion, StockActual,DepositoId,Descripcion};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多