从文本中读取到DataTable,并在DataTable中查询

本文介绍如何使用C#从DataTable中查询数据的方法,包括使用DataView设置RowFilter和利用Select方法进行条件筛选。此外还提供了从文本文件加载数据到DataTable的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<pre name="code" class="csharp"> /// <summary>
        /// 通过条件查出信息
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="str">查询条件</param>
        /// <returns></returns>
        public Record[] GetRecords(DataTable dt,string str)
        {
           DataRow[] rows= dt.Select(str);
           Record[] items = new Record[rows.Length];
           for (int i = 0; i < rows.Length; i++)
           {
               Record  record = new Record();
               record.ChannelId = (string)rows[i]["ChannelId"];
               record.StartTime = (string)rows[i]["StartTime"];
               record.EndTime = (string)rows[i]["EndTime"];
               record.lastTime = (string)rows[i]["LastTime"];
               record.Number = (string)rows[i]["Number"];
               items[i] = record;
           }
           return items;
        }


 /// <summary>
        /// 读取文本到DataTable中
        /// </summary>
        /// <param name="str">文件路径</param>
        /// <returns></returns>
        public DataTable ReadToDataTable(string str)
        {
            DataTable dt = new DataTable();
            using (StreamReader objReader = new StreamReader(str,Encoding.Default))
            {
                dt.Columns.Add("ChannelId", System.Type.GetType("System.String"));
                dt.Columns.Add("StartTime", System.Type.GetType("System.String"));
                dt.Columns.Add("EndTime", System.Type.GetType("System.String"));
                dt.Columns.Add("LastTime", System.Type.GetType("System.String"));
                dt.Columns.Add("Number", System.Type.GetType("System.String"));
                string sLine = "";
                while (sLine != null)
                {
                    sLine = objReader.ReadLine();
                    if (sLine != null && !sLine.Equals(""))
                    {
                        DataRow dr = dt.NewRow();
                        string[] values = sLine.Split('\t');
                        dr["ChannelId"] = values[0];
                        dr["StartTime"] = values[1];
                        dr["EndTime"] = values[2];
                        dr["LastTime"] = values[3];
                        dr["Number"] = values[4];
                        dt.Rows.Add(dr);
                    }
                }
                objReader.Close();
            }
            return dt;
        }

从DataTable中查询可以用一下两种方法

一:DataView

 /// <summary>
        /// 从DataTable中查询数据
        /// </summary>
        /// <param name="dt">DataTable对象</param>
        /// <param name="str">查询条件</param>
        /// <returns>返回一个DataView对象</returns>
        public DataView GetDv(DataTable dt, string str)
        {
            DataView dv = new DataView(dt);
            dv.RowFilter = str;
            return dv;
        }



二:dt.Select(查询条件)

 /// <summary>
        /// 通过条件查出信息
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="str">查询条件</param>
        /// <returns></returns>
        public Record[] GetRecords(DataTable dt,string str)
        {
           DataRow[] rows= dt.Select(str);
           Record[] items = new Record[rows.Length];
           for (int i = 0; i < rows.Length; i++)
           {
               Record  record = new Record();
               record.ChannelId = (string)rows[i]["ChannelId"];
               record.StartTime = (string)rows[i]["StartTime"];
               record.EndTime = (string)rows[i]["EndTime"];
               record.lastTime = (string)rows[i]["LastTime"];
               record.Number = (string)rows[i]["Number"];
               items[i] = record;
           }
           return items;
        }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值