我试图合并两个列表。我经常这样做成功的时候我已经合并类似ProductsList1.Product.Id
与ProductList2.Product.Id
,但是在这种情况下,它更像是ProductsList.Product.Id
与ProductCategoriesList.ProductCategory.ProductId
。第三级属性是什么让我!LINQ的 - 通过性能儿童相交2所列出对象
// LIST OF PRODUCTS IN RESULT SETS
List<Product> products = new List<Product>();
products.Add(new Product() { Id = 1 });
products.Add(new Product() { Id = 2 });
// LIST OF ALL PRODUCTS AND THEIR CATEGORY TAXONOMIES
List<ProductCategory> allProductCategories = new List<ProductCategory>();
allProductCategories.Add(new ProductCategory() { ProductId = 1, CategoryUid = 101, ParentCategoryUid = 30 });
allProductCategories.Add(new ProductCategory() { ProductId = 1, CategoryUid = 30, ParentCategoryUid = 2 });
allProductCategories.Add(new ProductCategory() { ProductId = 1, CategoryUid = 2, ParentCategoryUid = 1 });
allProductCategories.Add(new ProductCategory() { ProductId = 3, CategoryUid = 101, ParentCategoryUid = 43 });
allProductCategories.Add(new ProductCategory() { ProductId = 3, CategoryUid = 43, ParentCategoryUid = 8 });
allProductCategories.Add(new ProductCategory() { ProductId = 3, CategoryUid = 8, ParentCategoryUid = 1 });
// NEED TO MERGE THE 2ND LIST INTO THE 1ST BY PRODUCTID VIA SQL EQUIV INNER JOIN
// END RESULT SHOULD BE products list has 2 objects. one object has 1 list product category with 3 child objects
// THIS IS THE CLOSEST I GOT
products.Select(x => x.Id).Intersect(allProductCategories.Select(a => a.ProductId).ToList());
}
public class Product
{
private int _id;
private List<ProductCategory> _productCategories;
public int Id
{
get { return _id; }
set { _id = value; }
}
public List<ProductCategory> ProductCategories
{
get { return _productCategories; }
set { _productCategories = value; }
}
}
public class ProductCategory
{
private int _productId;
private int _categoryUid;
private int _parentCategoryUid;
public int ProductId
{
get { return _productId; }
set { _productId = value; }
}
public int CategoryUid
{
get { return _categoryUid; }
set { _categoryUid = value; }
}
public int ParentCategoryUid
{
get { return _parentCategoryUid; }
set { _parentCategoryUid = value; }
}
}
第一个和第二个列表不是同一类型,因此您如何计划合并它们?你试图达到什么样的最终结果,即什么类型的列表? –
好的,我看到你在代码块中继续提出你的问题作为评论。如果你将来不这样做,可能是最好的。这就是说,从你的评论中我不清楚最终的结果应该是什么。 –