【问题标题】:LINQ query finding the minimum value of one columnLINQ 查询查找一列的最小值
【发布时间】:2011-06-05 10:02:21
【问题描述】:

我有一个包含以下列的表格

inspection_dt,
contact_dt,
description,
product_mod,
product_desc,
contact_nm,
history_id,
inspect_id,
history_type,
incident_product_id,
contact_history_id

我会使用 LINQ 从该表中查询一个通用的行列表。不同的是,我想要 history_id 的最小 (MIN) 值——并模仿这个 SQL 查询。

SELECT DISTINCT
    inspection_dt,
    contact_dt,
    description,
    product_mod,
    product_desc,
    contact_nm,
    MIN(history_id) AS history_id,
    inspect_id,
    history_type,
    incident_product_id,
    contact_history_id
FROM
    myTable
GROUP BY
    inspection_dt,
    contact_dt,
    description,
    product_mod,
    product_desc,
    contact_nm,
    inspect_id,
    history_type,
    incident_product_id,
    contact_history_id

我试过 sn-ps 之类的

var searchData = items
    .GroupBy(i => new { i.history_id })
    .Select(g => new { history = g.Min() })
    .Distinct();

但还是搞砸了

我在使用 MIN、MAX 等函数以及在 LINQ 中进行分组时遇到了困难,如果我能得到任何帮助,我将不胜感激。

谢谢,

【问题讨论】:

    标签: sql linq min


    【解决方案1】:

    如果您想完全模拟查询,则需要按您在 SQL 中分组的相同列或字段进行分组。尝试类似

    .GroupBy(item => 
          new 
          {
              item.inspection_dt,
              item.contact_dt,
              item.description,
              item.product_mod,
              item.product_desc,
              item.contact_nm,
              item.inspect_id,
              item.history_type,
              item.incident_product_id
          }
         )
    .Select(g => g.Min(item => item.history_id))
    

    【讨论】:

      【解决方案2】:

      你可以试试下面这段代码。

      当我在分析器中查看它时,我注意到它会生成一个 SQL 交叉连接,但我认为它可以满足您的需求,并且您可以对其进行更多调整。

      var searchData = items.Select(x => new {x.inspection_dt,x.contact_dt, history= items.Min(j => j.history_id)}).Distinct();
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2013-04-27
        • 1970-01-01
        • 2015-04-22
        • 1970-01-01
        • 1970-01-01
        • 2021-07-25
        • 1970-01-01
        • 1970-01-01
        • 2022-10-26
        相关资源
        最近更新 更多