关于Linq对DataTable和List各自的两个集合筛选的相关操作技巧

项目中用到了对两个集合的帅选等操作,简单总结下

1.Linq操作多个Datable

可以通过AsEnumerable()方法对DataTable进行Linq操作

//获取数据表所有数据
 DataTable allJDt = GetDbDataTable(m_DBFile, "select * from 监测点");
//所有插入的数据
            DataTable jAddDt =
                dt.AsEnumerable()
                    .Where(n => n.Field<string>("TableName") == "监测点")
                    .Where(m => m.Field<string>("Operation") == "Insert")
                    .AsEnumerable();
 //根据主键帅选所有插入的数据
            DataTable jcaddDt =
                allJDt.AsEnumerable()
                    .Where(
                        x =>
                            jAddDt.AsEnumerable()
                                .Select(a => a.Field<string>("KeyFld"))
                                .Any(a => x.Field<string>("Name").Contains(a)));
//筛选表所有修改的数据(差集)
         DataTable    DjcModifyDt = allJDt.AsEnumerable().Except(jcaddDt.AsEnumerable());

2.Linq操作多个List

得到一组List主键,根据这个主键集合帅选出满足条件的数据集合。

//所有数据
 List<sys_Right_Navigation> rlistList =GetAllList();
//跟据组GroupID条件获取所有的主键
 List<int> gMist = rlistList .Where(n => n.GroupID == gID).Select(a => a.ModuleID).ToList();
 //这组的所有模块id
                    if (gMist.Count() > 0)
                    {
                       //根据主键list帅选满足条件的集合
                        rlistList = rlistList .Where(x => gMist.Any(p => p == x.ModuleID)).ToList();
                    }
时间: 2024-10-25 00:12:09

关于Linq对DataTable和List各自的两个集合筛选的相关操作技巧的相关文章

Linq查询datatable的记录集合

通过linq查询datatable数据集合满足条件的数据集 1.首先定义查询字段的变量,比方深度 string strDepth=查询深度的值: var dataRows = from datarow in dataTable(须要查询的datatable数据集).AsEnumerable() where string.Compare(datarow.Field<string>("查询字段.比方深度字段"), strDepth) >= 100 && s

linq to datatable 和lambda查询datatable

用Linq查询DataTable static DataTable table = new DataTable(); static DataColumn dc = new DataColumn(); static void Main() { Createtable(); table.Rows.Add(1, 2,"2010-1-1"); table.Rows.Add(2, 3, "2010-1-1"); table.Rows.Add(3, 4, "2010-

LINQ返回DataTable类型 list转dataset 转换为JSON对象

using System.Web.Script.Serialization; using System.Collections.Generic; using System.Reflection; using System.Data; using System; namespace CommonCode { public class Common { /// <summary> /// LINQ返回DataTable类型 /// </summary> public static Da

Working with LINQ to Entities &amp; LINQ to DataTable

Introduction Now a days, working with LINQ is an added advantage for any developer. We can write almost all types of queries when compared with SQL Server SQL querying. The important thing in LINQ is understanding the syntax and what it returns. Back

(转)C#用Linq实现DataTable的Group by数据统计

本文转载自:http://www.cnblogs.com/sydeveloper/archive/2013/03/29/2988669.html 1.用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(string)), new DataColumn("sex",

C# DataTable 相关操作

判断DataTable中某列是否包含某值 /// <summary> /// 判断DataTable中是否包含某值 /// </summary> /// <param name="dt">DataTable</param> /// <param name="columnName">列名</param> /// <param name="fieldData">值&l

C# 两个集合比较差值 Linq的Except的用法

C# 两个集合比较差值 Linq的Except的用法 值类型的集合比较差值 List<string> strList1 = new List<string>(){"a", "b", "c", "d"}; List<string> strList2 = new List<string>() { "a", "b", "f",

Linq to DataTable

using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using System.Threading.Tasks; namespace ConsoleApplication8{ public class Student { public int No { get; set; } public string Name { get; set; } publi

如何使用linq读取DataTable集合?AsQueryable() 和 AsEnumerable()区别?

一.准备工作 引入linq和data 相关的using命名空间 DataTable dt=new DataTable();//dt的来源可以是多个地方,比如:数据库,Excel等等.我这里使用Excel. 二.获取DataTable的列名及数据类型的方法 有了这个方法就不必考虑来源中的列名和数据类型,这里就可以查找到. foreach (DataColumn dc in dt.Columns)//获取DataTable中的列名,这里的dt由于是从Excel导入所有列名为:F1,F2,F3,F4.