整合/合并来自两个IEnumerable的列表中的数据到一个
问题描述:
我已经在我的应用程序下面的域对象:整合/合并来自两个IEnumerable的列表中的数据到一个
[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将有EXCEPT和cargoSuppliers_Pr填充数据的所有领域结冰将有填充数据的SupplierType, SupplierCode and IList<Product>
字段。 “供应商类型”和“供应商代码”的组合将是关键。
现在我必须将内容和定价合并为一个枚举,因此我可以将IEnumerable<CargoSupplier> cargoSuppliers
返回给我的控制器&视图。将这两个列表合并成一个的最佳方式是什么?
答
这听起来像你不希望只包含在任一列表中的所有项目一个列表 - 这听起来像你需要合并单个项目。事情是这样的:
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对象。
那是你以后的样子吗?
答
连接两个序列。
实施例:
var result = cargoSuppliers_Content.Concat(cargoSuppliers_Pricing);
答
看过联盟()扩展方法?这应该做你以后的事情
IEnumerable<CargoSupplier> allCargoSuppliers = cargoSuppliers_Pricing.Union(cargoSuppliers_Content);
答
你在找联盟还是我想问题中的东西?
var mergedList = list1.Union(list2).ToList();
记得导入System.Linq
命名空间
+1这也许是对的。我想“合并/合并”意味着他想要的东西比Concat更多。 – 2011-01-25 21:53:00