簡體   English   中英

從數據表對象中獲取字符串格式的 n 個行值

[英]Getting n number of row value in string format from datatable object

下面的數據表具有以下結構。

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

並且對於08:38:25檢索到的值將是08:38:25

嘗試這個:

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")部分以匹配您的數據類型。

您可以為 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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM