C# Linq俩个list<Datarow> 取差集,并自定义字段
可以自定义类 ,也可以从参考官网文档:Enumerable.Except 方法 (System.Linq) | Microsoft Learn
List<DataRow> list1 = new List<DataRow>();
List<DataRow> list2 = new List<DataRow>(); DataTable dataTable = new DataTable();
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string)); DataRow row1 = dataTable.NewRow();
row1["ID"] = 1;
row1["Name"] = "Alice";
list1.Add(row1); DataRow row2 = dataTable.NewRow();
row2["ID"] = 2;
row2["Name"] = "Bob";
list1.Add(row2); DataRow row3 = dataTable.NewRow();
row3["ID"] = 1;
row3["Name"] = "Alice";
list2.Add(row3); DataRow row4 = dataTable.NewRow();
row4["ID"] = 3;
row4["Name"] = "Dave";
list2.Add(row4); List<DataRow> result = list1.Except(list2, new DataRowComparer("ID")).ToList();
list1 = list1.Where(row => !list2.Contains(row, new DataRowComparer("ID"))).ToList();
list1.RemoveAll(row => list2.Contains(row));
foreach (DataRow row in list1)
{
Console.WriteLine(row["Name"]);
} class DataRowComparer : IEqualityComparer<DataRow>
{
private readonly string _columnName; public DataRowComparer(string columnName)
{
_columnName = columnName;
} bool IEqualityComparer<DataRow>.Equals(DataRow?x, DataRow?y)
{
if (x == null || y == null)
{
return false;
} return x[_columnName].Equals(y[_columnName]);
} int IEqualityComparer<DataRow>.GetHashCode(DataRow obj)
{
return obj[_columnName].GetHashCode();
}
}
C# Linq俩个list<Datarow> 取差集,并自定义字段的更多相关文章
- 关于 js 2个数组取差集怎么取
关于 js 2个数组取差集怎么取? 例如求var arr1 = [1]; var arr2 = [1,2];的差集方法一: Array.prototype.diff = function(a) { r ...
- mysql取差集、交集、并集
mysql取差集.交集.并集 博客分类: Mysql数据库 需求:从两个不同的结果集(一个是子集,一个是父集),字段为电话号码phone_number,找出父集中缺少的电话号码,以明确用户身份. 结合 ...
- [转载]EF或LINQ 查询时使用IN并且根据列表自定义排序方法
原文地址:EF或LINQ 查询时使用IN并且根据列表自定义排序方法作者:李明川 EF和LINQ改变了原有的手写SQL时期的一些编码方法,并且增强了各数据库之间的移植性简化了开发时的代码量和难度,由于很 ...
- javascript 取掉空格自定义函数
js 取掉空格自定义函数 //取掉左右空格: function trim(str){ return str.replace(/(^\s*)|(\s*$)/g, ""); } // ...
- 详解usbmon抓取的log各字段的含义
详解 usbmon 抓取的 log 各字段的含义 在上篇文章中,我们已经介绍了如何在 linux 下使用 usbmon 抓取 usb 总线上数据的方法.(https://www.cnblogs.com ...
- Linq 取差集 交集等
string goodsList = context.Request.Form["goodsList"]; if (!string.IsNullOrEmpty(goodsList) ...
- hive表格取差集
hive 求两个集合的差集 业务场景是这样的,这里由两个hive表格A和B A的形式大概是这样的:uid B的形式大概是这样的:uid 我想要得到存在A中但是不存在B中的uid 具体代码如下 sele ...
- Linq to Sql 左连接 , 取右表可能为 null的 int类型字段
linq to sql , linq to entity 遇到一个问题, 主表, 从表 一对一 关系, 主表有记录, 从表 可能没有记录. 现在要查询 主表+从表 的某几个字段. 从表字段 有的是 ...
- SQL中对于两个不同的表中的属性取差集except运算
SQL中对两个集合取差集运算,使用except关键字,语法格式如下: SELECT column_name(s) FROM table_name1 EXCEPT SELECT column_name( ...
- Oracle Minus 取差集
Oracle Minuskeyword SQL中的MINUSkeyword SQL中有一个MINUSkeyword,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有 ...
随机推荐
- Intel Pentium III 512MB内存 i815集显上安装Ubuntu Server 14.04
自己的御用奔腾III PC,接口齐全,准备安装Ubuntu Server 14.04 i386,继续发挥余热,物尽其用. 基本配置: CPU: Intel Pentium III 1000MHz, 2 ...
- 在.Net中操作redis
在.Net中操作redis 一.环境 .Net 7 redis 7.2.4 二.所需类包 StackExchange.Redis 三.连接redis信息 appsettings.json配置redis ...
- 03 Xpath lxml库的安装和使用
Python lxml库的安装和使用 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 Xpath 表达式提供了良好的支持,因此能够了高效地解析 HTML/XML 文 ...
- 在Linux下想要删除一个目录需要怎样的权限
场景一 在Home目录下创建一个目录dirtest,然后使用chmod 333 dirtest修改目录权限.这时候dirtest的权限为d-wx-wx-wx,如果执行rm -r dirtest可以进行 ...
- margin-bottom:-1px无效的问题
在实现tab的时候,margin-bottom:-1px无效的问题 active的tab项,要指定他的border-top, 如: border-top: 1px solid #fff; border ...
- C数据结构:哈夫曼树算法实现与应用
学习哈夫曼树(编码) 带权二叉树 认识WPL 最优二叉树 构造哈夫曼树的过程 哈夫曼树的应用 建立哈夫曼树 代码如下: 结构体代码部分 建立操作代码 找到最小结点(※难点) 附上建立哈夫曼树源代码 带 ...
- C语言:头文件ctype.h的内置函数
#include <stdio.h> #include <ctype.h>//内置函数的头文件 #include <math.h> int main() { int ...
- 10-flask博客项目
centos7 编译安装python3.7.1 安装步骤 centos7自带python2,由于执行yum需要python2,所以即使安装了python3也不能删除python21.安装依赖包yum ...
- 拼接sql 参数化 where userId in(@userIds)的问题
这里@userIds 如果 写成101,202,301翻译后的sql的where部分会是: where userId in('101,202,301'): 而不是期待的: where userId i ...
- Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
前言 在上一篇<Intel HDSLB 高性能四层负载均衡器 - 快速入门和应用场景>中,我们着重介绍了 HDSLB(High Density Scalable Load Balancer ...