2017-01-18 40 views
0

我必須從我國的表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 

我已經賺得了。現在,我必須得到對應

+0

'INT maxBillNumber = Convert.ToInt32(dt1.Compute( 「MAX(bill_number)」 的String.Empty));' –

+0

嘗試做研究然後再提問。我將把它作爲一個副本來關閉,讓我知道它是否不回答你的問題。 –

+0

我想你**誤解**我的問題。我已經提取了最大值,你可以看到上面的代碼。現在**我必須得到對應於最大行的另一列的值而不運行另一個查詢。** @JeremyThompson –

回答

1
 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()); 
     } 
+0

是的,你應該享有新的用戶權限... –

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]); 
} 
相關問題