获取一个数据表,但不是另一个使用LINQ存在什么 [英] Get what exists in one DataTable but not another using LINQ

查看:315
本文介绍了获取一个数据表,但不是另一个使用LINQ存在什么的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个数据表秒。我想在第一个存在的东西,但第二个不存在。我想在另一个数据表的结果。我想使用LINQ




  • 第一个数据表:






  DataTable的DT1 = cc1roleDAL.GetAll(X,0); 




  • 第二个数据表:






 的DataTable DT2 = cc1roleDAL.GetSpecific(X); 




请注意:列名我从两个数据表返回:





  1. crs_name


  2. 名称



解决方案

这将这样的伎俩为您提供:

  VAR rowsOnlyInDt1 = dt1.AsEnumerable(),其中(R =方式>!dt2.AsEnumerable()
//确保有没有DT2
。任何任何匹配的名称(R2 => R [crs_name ] .Trim()ToLower将()== R2 [crs_name] TRIM()ToLower将()及&安培; R [名。] TRIM()ToLower将()== R2 [名称。] .Trim()ToLower将()));



或者如果你喜欢的查询语法:



<$在dt1.AsEnumerable p $ p> VAR rowsOnlyInDt1 =从R()
//确保有没有DT2
任何匹配的名字在哪里!dt2.AsEnumerable()。任何(R2 =方式>:R [crs_name] TRIM()ToLower将()== R2 [crs_name] TRIM()ToLower将()及。和放大器;:R [名称] TRIM() 。.ToLower()== R2 [名称] TRIM()ToLower将())
选择R。

您就可以把结果放到一个DataTable使用的 CopyToDataTable 功能:

  DataTable的结果= rowsOnlyInDt1.CopyToDataTable(); 


I have two DataTables. I want to get what exists in the first one but does not exist in the second one. I would like the results in another DataTable. I would like to use LINQ.

  • The First datatable:

DataTable dt1 = cc1roleDAL.GetAll(x, 0);

  • The second datatable:

DataTable dt2 = cc1roleDAL.GetSpecific(x);

Note: the column names I return from the the two datatables:

  1. crs_name

  2. name

解决方案

This will do the trick for you:

var rowsOnlyInDt1 = dt1.AsEnumerable().Where(r => !dt2.AsEnumerable()
                    //make sure there aren't any matching names in dt2
                    .Any(r2 => r["crs_name"].Trim().ToLower() == r2["crs_name"].Trim().ToLower() && r["name"].Trim().ToLower() == r2["name"].Trim().ToLower()));

or if you prefer query syntax:

var rowsOnlyInDt1 = from r in dt1.AsEnumerable()
                    //make sure there aren't any matching names in dt2
                    where !dt2.AsEnumerable().Any(r2 => r["crs_name"].Trim().ToLower() == r2["crs_name"].Trim().ToLower() && r["name"].Trim().ToLower() == r2["name"].Trim().ToLower())
                    select r;

You can then put the results into a DataTable by using the CopyToDataTable function:

DataTable result = rowsOnlyInDt1.CopyToDataTable();

这篇关于获取一个数据表,但不是另一个使用LINQ存在什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆