以下数据表具有以下结构。
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
答案 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;
}
}