• 第三章 LINQ to DataSets基本用法


      LINQ to DataSet需要使用System.Core.dll、System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System.Data和System.Data.DataSetExtensions。

    1. 1.        DataTable读取列表

    DataSet ds = new DataSet();

     

    // 省略ds的Fill代码

     

    DataTable products = ds.Tables["Product"];

     

    IEnumerable<DataRow> rows = from p in products.AsEnumerable()

     

                                select p;

     

    foreach (DataRow row in rows)

     

    {

     

        Console.WriteLine(row.Field<string>("ProductName"));

     

    }

     

    DataSet ds = new DataSet();

     

    // 省略ds的Fill代码

     

    DataTable products = ds.Tables["Product"];

     

    var rows = products.AsEnumerable()

     

        .Select(p => new

     

        {

     

            ProductID = p.Field<int>("ProductID"),

     

            ProductName = p.Field<string>("ProductName"),

     

            UnitPrice = p.Field<decimal>("UnitPrice")

     

        });

     

    foreach (var row in rows)

     

    {

     

        Console.WriteLine(row.ProductName);

     

    }

     

    var products = ds.Tables["Product"].AsEnumerable();

    var query = from p in products

    select p.Field<string>("ProductName");

      2. DataTable查询

    var rows = products.AsEnumerable()

     

        .Where(p => p.Field<decimal>("UnitPrice") > 10m)

     

        .Select(p => new

     

        {

     

            ProductID = p.Field<int>("ProductID"),

     

            ProductName = p.Field<string>("ProductName"),

     

            UnitPrice = p.Field<decimal>("UnitPrice")

     

        });

      3. DataTable数据排序

    var rows = products.AsEnumerable()

     

        .Where(p => p.Field<decimal>("UnitPrice") > 10m)

     

        .OrderBy(p => p.Field<int>("SortOrder"))

     

        .Select(p => new

     

        {

     

            ProductID = p.Field<int>("ProductID"),

     

            ProductName = p.Field<string>("ProductName"),

     

            UnitPrice = p.Field<decimal>("UnitPrice")

     

        });

     

    var expr = from p in products.AsEnumerable()

     

                orderby p.Field<int>("SortOrder")

     

                select p;

     

    IEnumerable<DataRow> rows = expr.ToArray();

     

    foreach (var row in rows)

     

    {

     

        Console.WriteLine(row.Field<string>("ProductName"));

     

    }

     

    var expr = from p in ds.Tables["Product"].AsEnumerable()

               orderby p.Field<int>("SortOrder"), p.Field<string>("ProductName") descending

               select p;

      4. 多个DataTable查询

    var query = from p in ds.Tables["Product"].AsEnumerable()

     

                from c in ds.Tables["Category"].AsEnumerable()

     

                where p.Field<int>("CategoryID") == c.Field<int>("CategoryID")

     

                    && p.Field<decimal>("UnitPrice") > 10m

     

                select new

     

                {

     

                    ProductID = p.Field<int>("ProductID"),

     

                    ProductName = p.Field<string>("ProductName"),

     

                    CategoryName = c.Field<string>("CategoryName")

     

                };

      5. DataTable分组

    var query = from p in ds.Tables["Product"].AsEnumerable()

     

                group p by p.Field<int>("CategoryID") into g

     

                select new

     

                {

     

                    CategoryID = g.Key,

     

                    Products = g

     

                };

     

     

     

    foreach (var item in query)

     

    {

     

        Console.WriteLine(item.CategoryID);

     

        foreach (var p in item.Products)

     

        {

     

            Console.WriteLine(p.Field<string>("ProductName"));

     

        }

     

    }

        查询Product中每个CategoryID的数目:

    var expr = from p in ds.Tables["Product"].AsEnumerable()

     

               group p by p.Field<int>("CategoryID") into g

     

               select new

     

               {

     

                   CategoryID = g.Key,

     

                   ProductsCount = g.Count()

     

               };

  • 相关阅读:
    集合set() 和 深浅copy
    Python 数据类型的操作——字典
    Python()- 面向对象
    面向对象的软件开发
    Python数据类型的操作——列表、元组
    Python 数据类型的操作——字符串
    Linux下386中断处理
    任务的休眠与唤醒
    Linux下SIGSTOP的特殊特征和实现
    内核线程对信号的处理策略
  • 原文地址:https://www.cnblogs.com/yuands/p/7475254.html
Copyright © 2020-2023  润新知