LINQ To DataSet 示例

如果在项目遇到这样的问题如:DataTable1和DataTable2需要根据一定的规则进行合并成一个DataTable3。

问题1:DataTable1不是读数据库表的结果,而是合成的数据集,因此无法用SQL语句组合查询。

问题2:DataTable1与DataTable2本身就是非常繁琐的查询且结果集非常大,这样如果DataTable1再与DataTable2

    组合查询则很容易发生SQL执行超时。

遇到以上问题,第一个想法就是把两个DataTable,取出放至内存中用嵌套遍历的方式重组得到DataTable3.

.net推出LINQ后就可以用这种更简洁易懂的类SQL语法的LINQ To DataTable 来解决以上问题。下面我例出几个示例分享。

using System.Linq;
using System.Text;
using System.Data;

1.基本方法:

 DataSet ds = new DataSet();
   adapter.Fill(ds, "Customers");//读数据库略

var result = from s1 in ds.Tables["Customers"].AsEnumerable()

where s1.Field<string>("Region") == "SP"   //转换成string后进行对比,如果为DBNull 则传回空字符串
                                 select s1;

foreach (var item in result)
           Console.WriteLine(item["CustomerID"]);
   Console.ReadLine();

2.指定DataRowVersion:

var result = from s1 in ds.Tables["Customers"].AsEnumerable()
                                 where !s1.IsNull("Region") && (string)s1["Region"] == "SP"
                                 select s1;

3. Join组合查询:

var result = from s1 in ds.Tables["Customers"].AsEnumerable()
                                 join s2 in ds.Tables["Orders"].AsEnumerable() on
                                 s1.Field<string>("CustomerID") equals s2.Field<string>("CustomerID")
                                 where s2.Field<DateTime>("OrderDate") > DateTime.Parse("1997/1/1") &&
                                       s2.Field<DateTime>("OrderDate") < DateTime.Parse("1997/5/31")
                                 select new
                                 {
                                     OrderID = s2.Field<int>("OrderID"),
                                     CustomerName = s1.Field<string>("CompanyName"),
                                     OrderDate = s2.Field<DateTime>("OrderDate")
                                 };

4.Group

var result = from s in ds.Tables["Orders"].AsEnumerable()
                                 group s by s.Field<string>("CustomerID") into g
                                 select new
                                 {
                                     OrderID = g.First().Field<int>("OrderID"),
                                     CustomerID = g.Key
                                 };

5.返回前10行数据

var table = (from s1 in ds.Tables["Customers"].AsEnumerable() select s1).Take(10);

时间: 2024-10-13 11:26:46

LINQ To DataSet 示例的相关文章

LINQ(LINQ to DataSet)

http://www.cnblogs.com/SkySoot/archive/2012/08/21/2649471.html DataTable.Select()方法使用和 SQL 相似的过滤语法从 DataTable 中提取你关心的记录,虽然 Select()可以很好的工作,但它还是有一些明显的限制.首先,它是基于字符串的,也就是说可能的错误不能在编译的时候发现.其次,它的过滤功能也很有限,它没有提供 LINQ 操作符能够提供的其他特性,如排序.分组以及投影. 使用 LINQ to DataS

泛型 Field 和 SetField 方法 (LINQ to DataSet)

LINQ to DataSet 为 DataRow 类提供用于访问列值的扩展方法:Field 方法和 SetField 方法.这些方法使开发人员能够更轻松地访问列值,特别是 null 值.DataSet 使用 Value 来表示 null 值,而 LINQ 使用 .NET Framework 2.0 中引入的可以为 null 的类型支持.使用 DataRow 中预先存在的列访问器需要将返回对象强制转换成相应的类型.如果 DataRow 中的特定字段可以为 null,则必须显示检查 Null 值,

LinQ To DataSet

LINQ to DataSet 是LINQ to ADO.NET 的一个独立技术.使用LINQ to DataSet能够更 快更容易的查询DataSet对象中的数据. LINQ to DataSet 功能主要通过DataRowExtensions和DataTableExtensions静态类 中的扩展方法来实现.LINQ to DataSet 不但能够对DataSet 对象中的单个表进行查询,而且还能够通过联接操作对DataSet对象中的多个表进行查询. DataTableExtensions类

LINQ系列:LINQ to DataSet的DataTable操作

LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System.Data和System.Data.DataSetExtensions. 1. DataTable读取列表 DataSet ds = new DataSet(); // 省略ds的Fill代码 DataTable products = ds.Tables["Product"]; IEnume

LINQ to DataSet 之单表查询

       查询单个数据表        根据Linq to DataSet概述的步骤, 第一步我们获取数据源,我们这里手动创建一个datatable数据源 static DataSet BuildOneDTDataSet() { string[] nameset = { "张三", "李思思", "lisi", "王五", "路六", "欧赔", "夏琪",&qu

Linq:Select使用示例

一,select简单实用 select作用:select在一个集合序列按照给定的条件进行投影,select可以返回组合的筛选结果,返回匿名类型,对返回结果进行操作,返回组合的子查询结果等等. select方法的原型如下: public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> sel

2016.1.22 利用LINQ实现DataSet内多张DataTable关联查询操作(目前未发现太大价值)

DataSet ds = new DataSet(); DataTable t1 = DBFactorySingleton.GetInstance().Factory.GetDataTable(sql_ndp).Copy(); t1.TableName = "t1"; DataTable t2 = DBFactorySingleton.GetInstance().Factory.GetDataTable(sql_naip).Copy(); t2.TableName = "t2

读取XML文件到DataSet示例

/// <summary> /// 读取XML文件 /// </summary> /// <param name="fileName"></param> public string TestReadXMLFile(string fileName) { try { DataSet objDataSet = new DataSet(); string filepath = System.Web.HttpContext.Current.Serv

C# — LINQ To XML示例

今天对LINQ To XML的使用进行简单性的测试,代码如下: 第一步:新建一个项目LinqToXMLTest项目,创建一个DealXML.cs文件,加入代码如下: 第二步:运行程序,结果如下: 原文地址:https://www.cnblogs.com/hh8888-log/p/10861961.html