2013-04-30 125 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