【问题标题】:Getting n number of row value in string format from datatable object从数据表对象中获取 n 个字符串格式的行值
【发布时间】:2017-10-02 09:37:16
【问题描述】:

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

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

对于 2017 年 7 月 4 日,检索到的值将是 08:38:25

【问题讨论】:

  • 对于07/02/2017,为什么不能是08:32:04?你的意思是,你想要给定日期的最后一个LogTime
  • 没有给定日期的第二个 LogTime
  • @Ayman 你试过我的帖子了吗?
  • 是的,它不起作用,它显示此错误“对象引用未设置为对象的实例。”

标签: c# asp.net datatable


【解决方案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&lt;string&gt;("LogTime") 部分以匹配您的数据类型。

【讨论】:

    【解决方案2】:

    你可以实现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;
        }
    }
    

    【讨论】:

    • 数据不固定,我从数据库中获取数据,然后将其分配给数据表
    猜你喜欢
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2021-12-21
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多