C#中的DataTable查询实战教程

 更新时间:2021年01月13日 09:39:12   作者:Taowiedong  
这篇文章主要介绍了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<string>("STU_ID"), 
					  t2 = g.Field<string>("CLASS_ID")
				  } into m
			select new
			{
				STU_ID = m.Key.t1,
				CLASS_ID=m.Key.t2,
				成绩总合计 = m.Sum(a => a.Field<decimal>("成绩")),
				优秀人数 = m.Count(a => a.Field<decimal>("成绩")>95)
			};
DataTable dt_article = UserClass.ToDataTable(query); 
 
/// <summary>
/// LINQ返回DataTable类型
/// </summary>
/// <typeparam name="T"> </typeparam>
/// <param name="varlist"> </param>
/// <returns> </returns>
public static DataTable ToDataTable<T>(IEnumerable<T> 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;
}

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

相关文章

  • 将ocx文件转换成C#程序引用的DLL文件的办法

    将ocx文件转换成C#程序引用的DLL文件的办法

    将ocx文件转换成C#程序引用的DLL文件的办法,需要的朋友可以参考一下
    2013-03-03
  • C#设计模式之适配器模式与装饰器模式的实现

    C#设计模式之适配器模式与装饰器模式的实现

    创建型设计模式主要是为了解决创建对象的问题,而结构型设计模式则是为了解决已有对象的使用问题。本文将用C#语言实现结构型设计模式中的适配器模式与装饰器模式,感兴趣的可以了解一下
    2022-04-04
  • 详解C#中的委托

    详解C#中的委托

    本文主要介绍了C#中委托的相关知识。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • C#操作XML文件步骤

    C#操作XML文件步骤

    在本篇文章里小编给大家分享了关于C#操作XML文件步骤教学内容,有兴趣的朋友们可以学习下。
    2019-01-01
  • C#中委托、事件和回调的使用及说明

    C#中委托、事件和回调的使用及说明

    这篇文章主要介绍了C#中委托、事件和回调的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • LINQ操作符SelectMany的用法

    LINQ操作符SelectMany的用法

    这篇文章介绍了LINQ操作符SelectMany的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#创建安全的栈(Stack)存储结构

    C#创建安全的栈(Stack)存储结构

    这篇文章主要为大家详细介绍了C#创建安全的栈(Stack)存储结构的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • C# LINQ的基本使用方法示例

    C# LINQ的基本使用方法示例

    这篇文章主要给大家介绍了关于C# LINQ的基本使用教程,文中通过示例代码介绍的非常详细,对大家学习或者使用C# LINQ具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • WinFrom中label背景透明的实现方法

    WinFrom中label背景透明的实现方法

    这篇文章主要介绍了WinFrom中label背景透明的实现方法,方法简单实用,是C#程序设计中非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • C# Socket 发送&接收&返回 简单应用实例

    C# Socket 发送&接收&返回 简单应用实例

    下面小编就为大家分享一篇C# Socket 发送&接收&返回 简单应用实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11

最新评论