从最大属性对应的数据库中获取属性

时间:2017-01-18 04:48:15

标签: c# sql .net

我必须从帐单号码最大的表bill_version中获取reports (可以有多个具有相同值的帐单编号,但按其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_version的最大行对应的另一列bill_number的最大值,而不运行其他查询。

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

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

2 个答案:

答案 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());
        }

答案 1 :(得分:0)

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]); 
}