zoukankan      html  css  js  c++  java
  • LINQ to DataSet

    使用 LINQ to DataSet 可以更快更容易地查询在 DataSet 对象中缓存的数据。具体而言,通过使开发人员能够使用编程语言本身而不是通过使用单独的查询语言来编写查询,LINQ to DataSet 可以简化查询。对于现在可以在其查询中利用 Visual Studio 所提供的编译时语法检查、静态类型和 IntelliSense 支持的 Visual Studio 开发人员,这特别有用。

    LINQ to DataSet 也可用于查询从一个或多个数据源合并的数据。这可以使许多需要灵活表示和处理数据的方案(例如查询本地聚合的数据和 Web 应用程序中的中间层缓存)能够实现。具体地说,一般报告、分析和业务智能应用程序将需要这种操作方法。

    LINQ to DataSet 功能主要通过 DataRowExtensionsDataTableExtensions 类中的扩展方法公开。LINQ to DataSet 基于并使用现有的 ADO.NET 2.0 体系结构生成,在应用程序代码中不能替换 ADO.NET 2.0。现有的 ADO.NET 2.0 代码将继续在 LINQ to DataSet 应用程序中有效。下图阐释了 LINQ to DataSet 与 ADO.NET 2.0 和数据存储区的关系。

    LINQ to DataSet 基于 ADO.NET 提供程序。

    以上内容转载自 http://msdn.microsoft.com/zh-cn/library/bb386977.aspx

    下面我针对DataRowExtension和DataTableExtension进行一些测试。(备注,Extension是一个语言级别的改进点,属于C# 3.0语法,可以针对现有类型的方法进行扩展)

    image

    注意看以上这个SetField方法的图标,以及它的说明

    这两个扩展都是在System.Data.DataSetExtensions这个程序集中

    DataRow的扩展,增加了两个方法,实际上就是对于数据行的强类型访问

    image

    1. Field

    http://msdn.microsoft.com/zh-cn/library/system.data.datarowextensions.field.aspx

    2. SetField

    http://msdn.microsoft.com/zh-cn/library/system.data.datarowextensions.setfield.aspx

    下面看一个例子

    没有扩展之前的例子

    // Fill the DataSet.
    DataSet ds = new DataSet();
    ds.Locale = CultureInfo.InvariantCulture;
    FillDataSet(ds); 
     
    DataTable products = ds.Tables["Product"]; 
     
    var query =
        from product in products.AsEnumerable()
        where !product.IsNull("Color") &&
            (string)product["Color"] == "Red"
        select new
        {
            Name = product["Name"],
            ProductNumber = product["ProductNumber"],
            ListPrice = product["ListPrice"]
        }; 
     
    foreach (var product in query)
    {
        Console.WriteLine("Name: {0}", product.Name);
        Console.WriteLine("Product number: {0}", product.ProductNumber);
        Console.WriteLine("List price: ${0}", product.ListPrice);
        Console.WriteLine("");
    }
     
    使用扩展之后的例子
     
    // Fill the DataSet.
    DataSet ds = new DataSet();
    ds.Locale = CultureInfo.InvariantCulture;
    FillDataSet(ds);
     
    DataTable products = ds.Tables["Product"];
     
    var query =
        from product in products.AsEnumerable()
        where product.Field<string>("Color") == "Red"
        select new
        {
            Name = product.Field<string>("Name"),
            ProductNumber = product.Field<string>("ProductNumber"),
            ListPrice = product.Field<Decimal>("ListPrice")
        };
     
    foreach (var product in query)
    {
        Console.WriteLine("Name: {0}", product.Name);
        Console.WriteLine("Product number: {0}", product.ProductNumber);
        Console.WriteLine("List price: ${0}", product.ListPrice);
        Console.WriteLine("");
    }

     

    DataTable的扩展

    image

  • 相关阅读:
    暑期项目经验(七)--struts+jasperreporters
    暑期项目经验(六)--struts+json
    暑期项目经验(五)--struts+ajax
    暑假项目总结(四)--struts
    搭建python selenium pytest自动化测试环境
    --查询被锁的表
    具体实例教你如何做LoadRunner结果分析
    http://www.tuicool.com/articles/EJRv6jm醒醒吧少年,只用cucumber不能帮助你BDD
    loadrunner录制脚本,页面无法显示
    selenium中hidden或者是display = none的元素定位到但是不可以操作怎么办?
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1320471.html
Copyright © 2011-2022 走看看