在条件下从数据表dt中选择MAX-date

时间:2013-04-30 04:58:32

标签: c#

*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返回的内容.. 我需要在字符串变量

上选择c_INPUTMODE='C'的最大变化

请帮助

2 个答案:

答案 0 :(得分: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_INPUTMODE属于char类型,则您的where子句应为:

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

答案 1 :(得分:0)

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

WHERE maxdate.vc_devid=dt.vc_devid