跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

C#中的DataTable查询实战教程

DataTable查询工作中遇到了需要进行DataTable进行查询的需求,简单研究了一下,最终使用一下方案实现,简单记录一下便于以后使用。

DataTable dt = dataBox.GetDataForDataTable();//获取DataTable所有数据,准备进行查询DataRow[] dtRow = dt.Select("调剂日期=‘"+MediumCode.Text.Trim()+"'");//根据查询条件,筛选出所有满足条件的列DataTable dtNew = dt.Clone();//克隆与原表结构相同的新表(不包括数据) foreach (DataRow item in dtRow)//把满足条件的所有列赛到新表中{dtNew.ImportRow(item);}dataBox.DataBinding(dtNew);//给控件绑定新值(即查询结果)补充:C# 通过LINQ对DataTable数据查询,结果生成DataTable我就废话不多说啦,大家还是直接看代码吧~var query = from g in dt_stu.AsEnumerable() group g by new {t1 = g.Field("STU_ID"),t2 = g.Field("CLASS_ID")} into m select new{STU_ID = m.Key.t1,CLASS_ID=m.Key.t2,成绩总合计 = m.Sum(a => a.Field("成绩")),优秀人数 = m.Count(a => a.Field("成绩")>95)};DataTable dt_article = UserClass.ToDataTable(query);

///

/// LINQ返回DataTable类型/// /// /// /// public static DataTable ToDataTable(IEnumerable varlist){DataTable dtReturn = new DataTable();

// column names PropertyInfo[] oProps = null;

if (varlist == null) return dtReturn;

foreach (T rec in varlist){if (oProps == null){oProps = ((Type)rec.GetType()).GetProperties();foreach (PropertyInfo pi in oProps){Type colType = pi.PropertyType;

if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition()== typeof(Nullable<>))){colType = colType.GetGenericArguments()[0];}

dtReturn.Columns.Add(new DataColumn(pi.Name, colType));}}

DataRow dr = dtReturn.NewRow();

foreach (PropertyInfo pi in oProps){dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue (rec, null);}

dtReturn.Rows.Add(dr);}return dtReturn;}以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:C#在DataTable中根据条件删除某一行的实现方法C#过滤DataTable中空数据和重复数据的示例代码C# Datatable的几种用法小结C# DataTable.Select()根据条件筛选数据问题

相关文章