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();