`
sty2008boy
  • 浏览: 301745 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

# Linq To DataTable应用示例

阅读更多
Linq to DataTable范例代码
       以下代码段经测试通过,发现C# Linq其实还是挺好用的。只不过感觉语法上有点怪异, 如果格式上同标准SQL语法一致,这样程序员可能更好地掌握强大的Linq的
       private void btnLinqTest__Click(object sender, EventArgs e)
        {
            DataTable vtblSeqBase = this.DM.bdsSingle._mpDataTable;
            //1. GroupBy 统计Count      XXXTestOk 2011-07-18
            var query =
               from q in vtblSeqBase.AsEnumerable()
               group q by q.Field<string>("MachineType") into r
               select new
               {
                   _qMachType = r.Key,
                   _qCount = r.Count()
               };
            using (DataTable vtblCount = new DataTable())
            {
                DataRow vNewRow = null;
                vtblCount.Columns.Add("MachType", typeof(string));
                vtblCount.Columns.Add("Count", typeof(int));
                foreach (var vq in query)
                {
                    vNewRow = vtblCount.NewRow();
                    vNewRow["MachType"] = vq._qMachType;
                    vNewRow["Count"] = vq._qCount;
                    vtblCount.Rows.Add(vNewRow);
                }
                //vtblCount.mmViewForRD();
            }
            //2. Distinct用法       XXXTestOk 2011-07-18
            var d = (from DataRow vRow in vtblSeqBase.Rows
                     select new { _MachType = vRow["MachineType"] }).Distinct();
            using (DataTable vtblDistinct = new DataTable())
            {
                DataRow vNewRow = null;
                vtblDistinct.Columns.Add("MachType", typeof(string));
                vtblDistinct.Columns.Add("Count", typeof(int));
                foreach (var q in d)
                {
                    vNewRow = vtblDistinct.NewRow();
                    vNewRow["MachType"] = q._MachType;
                    vtblDistinct.Rows.Add(vNewRow);
                }
                //vtblDistinct.mmViewForRD();
            }
            //DataTableExtensions.CopyToDataTable
            //3.
            List<int> vListNum = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };
            IEnumerable<int> vDistNum = vListNum.Distinct();
            foreach (int n in vDistNum)
            {
                //MessageBox.Show("不重复的数值 =" + n.ToString());
            }
            //4. Group By 一个字段
            var querySum =
                from q in vtblSeqBase.AsEnumerable()
                group q by q.Field<string>("MachineType") into g
                select new
                {
                    _qMachType = g.Key,
                    _qSamTotal = g.Sum(q => q.Field<decimal>("SamValue"))
                };
            using (DataTable vtblSAMTotal  = new DataTable())
            {
                DataRow vNewRow = null;
                vtblSAMTotal.Columns.Add("MachType", typeof(string));
                vtblSAMTotal.Columns.Add("SAMTotal", typeof(decimal));
                foreach (var vq in querySum)
                {
                    vNewRow = vtblSAMTotal.NewRow();
                    vNewRow["MachType"] = vq._qMachType;
                    vNewRow["SAMTotal"] = vq._qSamTotal;
                    vtblSAMTotal.Rows.Add(vNewRow);
                }
                //vtblSAMTotal.mmViewForRD();
            }
            //5. Group By 多个字段 GBN = Group By NField
            var queryGBN  =
                from q in vtblSeqBase.AsEnumerable()
                group q by new {机器代码=q.Field<string>("MachineType"), 工序代码=q.Field<string>("SeqCode") }
                into g
                select new
                {
                    _qMachType = g.Key,
                    _qSamTotal = g.Sum(q => q.Field<decimal>("SamValue")),
                    _qSamAvg = g.Average(q => q.Field<decimal>("SamValue"))
                };
            using (DataTable vtblSAMTotal = new DataTable())
            {
                DataRow vNewRow = null;
                vtblSAMTotal.Columns.Add("MachType", typeof(string));
                vtblSAMTotal.Columns.Add("SeqCode", typeof(string));
                vtblSAMTotal.Columns.Add("SAMTotal", typeof(decimal));
                vtblSAMTotal.Columns.Add("SAMAvg", typeof(decimal));
                foreach (var vq in queryGBN)
                {
                    vNewRow = vtblSAMTotal.NewRow();
                    vNewRow["MachType"] = vq._qMachType;
                    vNewRow["SeqCode"] = vq._qMachType;
                    vNewRow["SAMTotal"] = vq._qSamTotal;
                    vNewRow["SAMAvg"] = vq._qSamAvg;
                    vtblSAMTotal.Rows.Add(vNewRow);
                }
                vtblSAMTotal.mmViewForRD();
            }
        }
分享到:
评论

相关推荐

    (GOOD,PASS)LINQ TO DATATABLE OR DATASET 完美解决方案,可排除DATASET不支持System.Nullable错误,并为GRIDVIEW增加空行

    ### 一、理解 LINQ to DataTable or DataSet 的完美解决方案 #### 1.1 LINQ to DataTable or DataSet 的简介 LINQ (Language Integrated Query) 是 .NET Framework 中的一项强大功能,它允许开发者使用类似于 SQL ...

    Linq技术实例 Linq To Sql Linq To DataSet

    // Linq To DataSet 示例 using (var adapter = new YourDataAdapter()) using (var dataSet = new DataSet()) { adapter.Fill(dataSet); // 检索 var londonCustomers = dataSet.Tables["Customers"] ....

    语言集成查询(LINQ)

    4. **LINQ to DataSet**: 增强了DataSet的功能,允许使用LINQ查询代替传统的DataTable查询方法。 5. **LINQ to ADO.NET Data Services**: 用于查询基于ADO.NET的实体框架的数据。 #### C#中的LINQ入门 在C#中使用...

    Linq to datable(Left join right join full join)实例

    通过查看和运行这个项目,你可以深入理解如何在实际应用中使用LINQ to DataTable执行各种类型的连接操作,并学习如何在VB环境中调试和测试这些查询。 总之,Linq to DataTable提供的左连接、右连接和全连接功能,...

    examples:LINQ to DB代码示例

    LINQ to DB代码示例使用权 。 开始使用LINQ to Access。火鸟 。 开始使用LINQ to Firebird。PostgreSQL 。 开始使用LINQ to PostgreSQL。SqlCe 。 LINQ to SqlCe入门。SQLite的 。 LINQ to SQLite入门。 。 该项目...

    LINQ TO DGV

    通过查看和学习这个文件,开发者可以更深入地理解如何在实际项目中应用“LINQ TO DGV”。 总之,“LINQ TO DGV”是C#开发中的一种常见实践,它利用LINQ的强大功能,结合DataGridView的易用性,为用户提供直观的数据...

    Linq实例代码 Linq的所有实例代码

    在"Linq实例代码 Linq的所有实例代码"这个资源包中,我们可以找到一系列关于Linq的实际应用示例,涵盖了Linq的基础用法以及一些高级特性。这些示例包括: 1. **Linq to Objects**:这是Linq的基础,用于处理内存中...

    修改DataTable的某一行某一列的值

    对于那些需要在内存中处理数据的应用程序来说,`DataTable`提供了一种灵活的方式来组织和管理数据。本文将详细介绍如何在`DataTable`中修改特定行的特定列的值,并探讨相关的注意事项。 #### 基本概念 1. **...

    LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习

    5. **LINQ to DataSet**:处理DataTable对象的查询。 ### 示例 ```csharp using System.Linq; class Program { static void Main() { var items = new[] { new { Id = 1, Name = "Apple" }, new { Id = 2, ...

    Linq to DataSet

    ### Linq to DataSet知识点详解 #### 一、LINQ to DataSet概述 **LINQ to DataSet** 是 **Language Integrated Query...对于需要频繁处理大量数据的应用程序来说,掌握 **LINQ to DataSet** 的使用方法是非常有益的。

    linq对数据datatale的查询

    在.NET框架中,LINQ(Language Integrated Query)是一种强大的查询技术,它可以应用于多种数据源,包括内存中的对象集合、XML文档以及数据库等。对于处理`DataTable`这样的数据结构,LINQ提供了一种简洁且功能丰富...

    LINQ进行数据查询的基础入门

    - **LINQ to Dataset**:在内存中操作DataSet和DataTable。 - **LINQ to SQL**:映射数据库表到对象模型,简化数据库访问。 ### 7. 示例代码 ```csharp using System.Linq; // LINQ to Objects var numbers = new...

    LINQ TO SQL 存储过程-返回结果集

    LINQ TO SQL 存储过程-返回结果集 在 LINQ to SQL 中,使用存储过程可以返回结果集,包括单个结果集和多个结果集。下面我们将详细介绍如何使用 LINQ to SQL 实现存储过程的返回结果集。 一、返回单个结果集 在 ...

    LINQ 实战 7/11

    第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ功能的方法以及LINQ to DataSet。  本书适合于使用C#和VB.NET...

    LINQ案例101,学习LINQ好帮手

    这个“LINQ案例101”涵盖了LINQ的四大主要应用领域:LINQ to XML、LINQ to SQL、LINQ to Datasets以及LINQ to Objects,是学习和理解LINQ的宝贵资源。 **LINQ to XML** LINQ to XML是LINQ的一个重要组成部分,它...

    linq to sql 操作存储过程、函数总结(二)

    本文将深入探讨“LINQ to SQL”在操作数据库存储过程和函数方面的应用。LINQ(Language Integrated Query,语言集成查询)是.NET框架中的一个强大工具,它允许开发人员使用C#或VB.NET等语言的自然语法来查询数据。...

    LINQ 实战 1/11

    第二、三、四部分详细介绍了LINQ的三大主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ功能的方法以及LINQ to DataSet。  本书适合于使用C#和VB.NET...

    VS2010轻松学习C#-从零到深入-天轰穿.NET4趣味编程视频教程_第36讲:LINQ to DataSet

    以下是一个简单的LINQ to DataSet查询示例: ```csharp var query = from row in dataSet.Tables["Customers"].AsEnumerable() where row.Field("City") == "London" select row; ``` 这段代码将从名为...

    linq.rar_.net_C# LInq_linq _linq .net3.0

    4. **LINQ to DataSet**:允许开发者使用LINQ查询DataSet和DataTable,增强了ADO.NET的数据处理能力。 在C#中,LINQ的关键在于扩展方法和匿名类型。`Enumerable`和`Queryable`两个静态类提供了大量的扩展方法,如`...

Global site tag (gtag.js) - Google Analytics