linq 不同对象集合 交集 差集
- 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();
浙公网安备 33010602011771号