【问题标题】:Can anyone convert this linq code into a SQL query (because I don't understand what is it doing)?任何人都可以将此 linq 代码转换为 SQL 查询(因为我不明白它在做什么)?
【发布时间】:2019-05-29 08:32:21
【问题描述】:
var don2 = db.Panels.Include(y => y.Invoice)
                    .Include(x => x.PanelTypeEntries
                                   .Select(a => a.SubItems))
                    .Where(v => v.Invoice_Id == Quotation_Id)
                    .ToList();

【问题讨论】:

  • 我已经格式化和缩进了。你知道其中的关键词是什么意思吗?你可以忽略ToList()Include 基本上意味着加入该表。 Select 表示仅包含该列。 Where 是不言自明的。您熟悉基础表吗?
  • 感谢您的关心,我的朋友,是的,我熟悉查询语言,但这里的关键字如 include 让我感到困惑。我是 linq 新手,找不到合适的资源来学习它
  • 如果这实际上是在一些运行代码中,你可以使用Console.WriteLine(dbContext.GetCommand(yourQuery).CommandText);。我相信你也可以使用 LinqPad
  • 这不是“不言自明”。 xyz 是表名吗? InvoicePanelTypeEntriesSubItemsInvoice_Id 呢?列名?

标签: c# linq linq-to-sql


【解决方案1】:

这是 LinQ 的作用:

代码使用你的dbContext的Panels实体集,这意味着你数据库中的Panels表。

然后,您将包含一个Invoice 实体,因为它是您的面板的一部分。它很可能是另一个与 Panels 有关系的表。

您还将看起来像 PanelTypeEntries 的集合添加到您的 Panels 实体中。您可能在数据库中的这些表之间存在 N-N 关系。在包含PanelTypeEntries 时,您只是在选择它的SubItems 属性。可能是因为Panels 不包含PanelTypeEntries 的列表,而是SubItems 的列表。

where() 子句与 SQL 中的相同。

最后,ToList() 要求提供者执行请求并将其存储在List 中。这就是var don2的类型是List的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多