【问题标题】:Fetch an attribute from database corresponding to maximum attribute从数据库中获取对应于最大属性的属性
【发布时间】:2017-06-02 08:48:33
【问题描述】:

我必须从我的表 reports 中获取 bill_version,其中账单编号最大
(可以有多个具有相同价值但按 bill_version 分类的账单编号)

我是 C# 的新手,不知道相应的语法。到目前为止,我能够在变量maxBillNumber 中获得最大账单编号。我不想运行另一个查询来获取该账单版本。如何根据我的需要修改此代码?

代码如下:

int maxBillNumber =0;
if (dt1.Rows.Count > 0)
{
     foreach (DataRow dr in dt1.Rows)
     {
         int bill_number1 = dr.Field<int>("bill_number");
         maxBillNumber = Math.Max(maxBillNumber, bill_number1);
     }
}

提前致谢!

编辑
我必须在不运行另一个查询的情况下获取与包含bill_number 的最大行相对应的另一列bill_version 的最大值。

bill_number  bill_version  
1            0  
2            0  
3            0  
4            1  
4            2  
4            3  

我已经获取了 4。现在我必须得到相应的 3

【问题讨论】:

  • int maxBillNumber = Convert.ToInt32(dt1.Compute("max(bill_number)", string.Empty));
  • 在你提问之前尝试做研究。我将把它作为一个副本关闭,如果它不能回答你的问题,请告诉我。
  • 我猜你误解了我的问题。我已经获取了最大值,您可以查看上面的代码。现在 我必须在不运行另一个查询的情况下获取与该最大行相对应的另一列的值。 @JeremyThompson
  • 好吧 google C# DataTable Select DataRow[] result = dt1.Select("bill_number = " + maxBillNumber); foreach (DataRow row in result) { Console.WriteLine("{0}", row[0]); } 因为数据都在内存中作为 DataTable 这个代码不是另一个查询。
  • 对不起,我确实误解了,但这是一百多个问题的重复,所以我对在询问之前进行研究的建议仍然有效stackoverflow.com/questions/7836037/datatable-select-method

标签: c# sql .net


【解决方案1】:
int maxBillNumber = Convert.ToInt32(dt1.Compute("max([bill_number])", string.Empty));

DataRow[] result = dt1.Select("bill_number = " + maxBillNumber); 
foreach (DataRow row in result) 
{
   Console.WriteLine("{0}", row[0]); 
}

【讨论】:

    【解决方案2】:
            var table = new DataTable();
            table.Columns.Add("BillNumber", typeof(int));
            table.Columns.Add("BillVersion", typeof(int));
    
            // Here we add five DataRows.
            table.Rows.Add(1, 0);
            table.Rows.Add(2, 0);
            table.Rows.Add(3, 0);
            table.Rows.Add(4, 1);
            table.Rows.Add(4, 2);
            table.Rows.Add(4, 3);
            var dataRows = table.AsEnumerable().ToList();
    
            var result = dataRows.OrderByDescending(x => x.ItemArray[0]).ThenByDescending(x => x.ItemArray[1]).FirstOrDefault();
    
            if (result != null)
            {
                Console.WriteLine(result.ItemArray[0].ToString());
                Console.WriteLine(result.ItemArray[1].ToString());
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      相关资源
      最近更新 更多