linq 不同对象集合 交集 差集

来源:互联网 发布:apache开源项目介绍 编辑:程序博客网 时间:2024/05/09 04:14
    class Product    {        public int ID { get; set; }        public string SubID { get; set; }        public double Price { get; set; }    }    class SubProduct    {        public string ID { get; set; }    }
            var pList1 = new List<Product>            {                new Product {ID = 1, SubID = "AA", Price = 0.1 },                new Product {ID = 2, SubID = "BB", Price = 0.2 },                new Product {ID = 3, SubID = "BB", Price = 0.4 },                new Product {ID = 4, SubID = "AA", Price = 0.7 },                new Product {ID = 5, SubID = "CC", Price = 0.3 }            };            var pList2 = new List<SubProduct>            {                new SubProduct { ID="AA" },                new SubProduct { ID="BB" }            };


交集 三种实现 ,差集在前面加非运算即可

1、

var result = pList1.Where(x => !pList2.Select(y => y.ID).Contains(x.SubID)).ToList();


2、

var ids = pList2.Select(x => x.ID).Distinct().ToList();var result1 = pList1.GroupBy(x => x.SubID).Where(x => ids.Contains(x.Key)).SelectMany(x => x).ToList();


3、

var ids = pList2.Select(x => x.ID).Distinct().ToList();var result = pList1.AsParallel().GroupBy(x => x.SubID).Where(x => ids.Contains(x.Key)).SelectMany(x => x).ToList(); 


0 0
原创粉丝点击