zoukankan      html  css  js  c++  java
  • 第三章 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()

     

               };

  • 相关阅读:
    Connected Graph
    Gerald and Giant Chess
    [NOI2009]诗人小G
    四边形不等式小结
    [NOI2007]货币兑换
    Cats Transport
    Cut the Sequence
    Fence
    The Battle of Chibi
    [Usaco2005 Dec]Cleaning Shifts
  • 原文地址:https://www.cnblogs.com/yuands/p/7475254.html
Copyright © 2011-2022 走看看