[英]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.