我的应用程序中有以下域对象:
[Serializable]
public class Supplier
{
public virtual string SupplierType { get; set; }
public virtual string SupplierCode { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual string Rating { get; set; }
public virtual string WebsiteURL { get; set; }
public virtual IList<Address> Address { get; set; }
}
[Serializable]
public class CargoSupplier : Supplier
{
public virtual IList<Image> Images { get; set; }
public virtual string OpeningTime { get; set; }
public virtual string ClosingTime { get; set; }
public virtual IList<Product> Products { get; set; }
}
我必须转到两个单独的存储库来获取描述性内容(来自数据库)和定价(来自外部Web服务),并且将有两个单独的枚举填充数据(描述性内容和定价):
IEnumerable<CargoSupplier> cargoSuppliers_Pricing
IEnumerable<CargoSupplier> cargoSuppliers_Content
cargoSuppliers_Content将使用除IList<Product>
之外的数据填充所有字段,而cargoSuppliers_Pricing将填充数据SupplierType, SupplierCode and IList<Product>
个字段。 “SupplierType”和“SupplierCode”的组合将成为关键。
现在我必须将内容和定价合并到一个枚举中,这样我就可以将IEnumerable<CargoSupplier> cargoSuppliers
返回给我的控制器&amp;视图。合并/合并这两个列表的最佳方法是什么?
答案 0 :(得分:4)
你在找联盟还是我在问题中遗漏了什么?
var mergedList = list1.Union(list2).ToList();
请记住导入System.Linq
命名空间
答案 1 :(得分:3)
连接两个序列。
示例:
var result = cargoSuppliers_Content.Concat(cargoSuppliers_Pricing);
答案 2 :(得分:3)
听起来你不希望一个列表只包含任一列表中的所有项目 - 听起来你需要合并单个项目。像这样:
var query = from pricing in cargoSuppliers_Pricing
join content in cargoSuppliers_Content
on pricing.SupplierCode equals content.SupplierCode
select new CargoSupplier
{
// Copy properties from both objects here
};
在“选择”部分中,您将从“定价”中获取定价部分,从“内容”中获取内容部分,构建具有两个位的CargoSupplier对象。
那是你所追求的吗?
答案 3 :(得分:0)
看过Union()扩展方法?这应该做你的事后
IEnumerable<CargoSupplier> allCargoSuppliers = cargoSuppliers_Pricing.Union(cargoSuppliers_Content);