2013-04-30 81 views
0
*VC_DEVID* *DT_LODDATE*    *C_INPUTMODE* *DT_ALTERDATE* 
DEVC109   29/Apr/2013 12:50:29  R   30/Apr/2013 12:50:29 
DEVC110   29/Apr/2013 12:50:29  M   29/Apr/2013 12:50:29 
DEVC111   29/Apr/2013 12:50:29  M   28/Apr/2013 12:50:29 
DEVC112   29/Apr/2013 12:50:29  M   27/Apr/2013 12:50:29 
DEVC109   29/Apr/2013 12:50:29  R   26/Apr/2013 12:50:29 

這是在我的DataTable returs .. 我需要選擇最大alterdate一個字符串變量,其中c_INPUTMODE='C'選擇MAX-日期條件

請幫助

回答

2

你可以使用LINQ to DataSet/DataTable用於此目的,如:

DateTime maxDate = dt.AsEnumerable() 
         .Where(r => r.Field<string>("C_INPUTMODE") == "C") 
         .Max(r => r.Field<DateTime>("DT_ALTERDATE")); 

或者

DateTime maxDate = dt.AsEnumerable() 
      .Where(r => r.Field<string>("C_INPUTMODE") == "C") 
      .Select(r => r.Field<DateTime>("DT_ALTERDATE")) 
      .Max(); 

如果列C_INPUTMODEchar類型的那麼你的where子句應該是:

.Where(r=> r.Field<char>("C_INPUTMODE") == 'C') 
+0

它顯示根據該)上dt.AsEnumerable一個誤差(和焦炭<( 「C_INPUTMODE」)<符號 – 2013-04-30 05:06:31

+0

@ user2305958,檢查最新的答案,有錯別字,應該是'' – Habib 2013-04-30 05:07:17

+0

錯誤依然存在Enumerable()_>顯示System.Data.DataTable不包含asEnumerable的定義 – 2013-04-30 05:25:09

0
SELECT dt.* 
FROM 
dt, 
(SELECT max(dt_alterdate) 
    FROM dt 
    where c_inputmode='C') 
AS maxdate 

WHERE maxdate.vc_devid=dt.vc_devid 
+1

歡迎使用StackOverflow:如果您發佈代碼,XML或數據樣本,請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」)語法突出顯示 – 2013-04-30 05:08:26

+0

thanx全部都知道它 DataRow [] dRows = dt.Select(「DT_ALTERDATE = MAX(DT_ALTERDATE)and C_INPUTMODE ='R'」); (DataRow dr在dRows中) { objReset.prpDtreset = dr [3] .ToString(); } – 2013-04-30 05:38:43