读书人

LINQ过滤两个集合的交加获得差集

发布时间: 2013-04-26 16:27:53 作者: rapoo

LINQ过滤两个集合的交集,获得差集。
有两个集合,

  List<TmpClCldocInfo> list1 = new List<TmpClCldocInfo>() { new TmpClCldocInfo() { UNIT_ID = "1", DOC_NUM = "1" }, new TmpClCldocInfo() { UNIT_ID = "2", DOC_NUM = "2" } };
List<TmpClCldocInfo> list2 = new List<TmpClCldocInfo>() { new TmpClCldocInfo() { UNIT_ID = "1", DOC_NUM = "1" }, new TmpClCldocInfo() { UNIT_ID = "2", DOC_NUM = "2" }, new TmpClCldocInfo() { UNIT_ID = "3", DOC_NUM = "3" } };

怎样用linq过滤掉两个集合的交集 拿到他们的差集 “new TmpClCldocInfo() { UNIT_ID = "3", DOC_NUM = "3" }” 这个数据呢? LINQ过滤
[解决办法]

Except操作符是从一个集合中取另一个集合的差集,即从集合A中取出集合B中不包含的元素。
如:两个集合,infos和temp,temp集合中包含了infos集合中不存在的元素

var infos = from p in context.Infos.ToList() select p;
var temp = infos.Where(p => p.Sex == true).ToList();
temp.Add(new Info
{
Code = "p100",
Name = "哈哈",
Sex = false,
Nation = "n004",
Birthday = DateTime.Now
});

使用扩展方法:

var q = infos.Except(temp);

使用查询表达式语法:

var q = (from p in infos select p).Except(from m in temp select m);


这个也是我从网上找的嘿嘿

读书人网 >.NET

热点推荐