从datatable对象获取字符串格式的n个行值

时间:2017-10-02 09:37:17

标签: c# asp.net datatable

以下数据表具有以下结构。

RCDID    EmployeeID  LogDate     LogTime    TerminalID  InOut
1682284  362426      07/01/2017  08:38:46   HO001        0
1682286  362426      07/02/2017  08:32:04   HO001        0
1682287  362426      07/02/2017  08:32:06   HO001        0
1682289  362426      07/03/2017  08:35:08   HO001        0
1682291  362426      07/04/2017  08:38:23   HO001        0
1682292  362426      07/04/2017  08:38:25   HO001        0

如何以字符串的形式检索特定日期的LogTime的第二个值。

例如,对于日期07/02/2017,检索到的值将为08:32:06

并且对于07/04/2017,检索到的值将为08:38:25

2 个答案:

答案 0 :(得分:1)

试试这个:

string logTime = dataTable.AsEnumerable()
                          .Where(d => d.Field<DateTime>("LogDate").Date == new DateTime(2017, 4, 7).Date)
                          .Select(s => s.Field<string>("LogTime"))
                          .ToList()[1];

如果LogTime是字符串,则会返回表格中的第二个值,如果不更改s.Field<string>("LogTime")部分则匹配您的数据类型。

答案 1 :(得分:0)

您可以按照

实现DataTable类的扩展方法
class Program
{
    static void Main(string[] args)
    {
        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[] {
            new DataColumn("RCDID", typeof(int)),
            new DataColumn("EmployeeID", typeof(int)),
            new DataColumn("LogDate", typeof(string)),
            new DataColumn("LogTime", typeof(string)),
            new DataColumn("TerminalID", typeof(string)),
            new DataColumn("InOut   ", typeof(int)),
        });

        dt.Rows.Add(1682284, 362426, "07/01/2017", "08:38:46", "HO001", 0);
        dt.Rows.Add(1682286, 362426, "07/02/2017", "08:32:04", "HO001", 0);
        dt.Rows.Add(1682287, 362426, "07/02/2017", "08:32:06", "HO001", 0);
        dt.Rows.Add(1682289, 362426, "07/03/2017", "08:35:08", "HO001", 0);
        dt.Rows.Add(1682291, 362426, "07/04/2017", "08:38:23", "HO001", 0);
        dt.Rows.Add(1682292, 362426, "07/04/2017", "08:38:25", "HO001", 0);


        var result = dt.GetValueFromColumnByColumn("LogDate", "07/04/2017", "LogTime");
    }
}

public static class DataTableExtension
{
    public static object GetValueFromColumnByColumn(this DataTable dataTable, string byColumn, object valueOfByColumn, string fromColumn)
    {
        foreach (DataRow row in dataTable.Rows)
        {
            if (row[byColumn] == valueOfByColumn)
            {
                return row[fromColumn];
            }
        }
        return null;
    }
}
相关问题