我必须从帐单号码最大的表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
答案 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]);
}