我可以有多个(最多5个)IEnumerable< Resortsupplier>并希望将它们合并为单个IEnumerable< Resortsupplier>按supplierCode分组.我的对象看起来像这样:
这是我的对象:
[Serializable] public class Resortsupplier { public string supplierCode { get; set; } public IList<Product> ResortProducts { get; set; } } [Serializable] public class Product { public string Code { get; set; } //Other fields... public IList<PerPricing> PricingDetail { get; set; } } [Serializable] public class PerPricing { //Other fields.. public decimal? Price { get; set; } public Error PricingError { get; set; } }
多个IEnumerable中的数据可能如下所示:
---------------------------------------- IEnumerable<Resortsupplier> - 1 Hyatt Resort Standard Room PricingDetail-1 Superior Room PricingDetail-1 Sandals Resort Standard Room PricingDetail-1 Delux Room PricingDetail-1 ---------------------------------------- IEnumerable<Resortsupplier> - 2 Hyatt Resort Standard Room PricingDetail-2 Superior Room PricingDetail-2 One bed Room Suit PricingDetail-2 Sandals Resort Standard Room PricingDetail-2 Honeymoon Suit PricingDetail-2 ---------------------------------------- IEnumerable<Resortsupplier> - 3 ..... ---------------------------------------- IEnumerable<Resortsupplier> - 4 ..... ---------------------------------------- IEnumerable<Resortsupplier> - 5 ..... ----------------------------------------
我的综合结果应包含:
IEnumerable<Resortsupplier> - Consolidated Hyatt Resort Standard Room PricingDetail-1 PricingDetail-2 Superior Room PricingDetail-1 PricingDetail-2 bed Room Suit PricingDetail-2 Sandals Resort Standard Room PricingDetail-1 PricingDetail-2 Delux Room PricingDetail-1 Honeymoon Suit PricingDetail-2 ----------------------------------------
处理这个问题的最佳方法是什么?我尝试了简单的IEnumerable.Union和GroupBy子句,但没有得到我想要的结果.
解决方法
我想你想要的东西:
// You can construct this with an array if it isn't already in this form. IEnumerable<IEnumerable<Resortsupplier>> supplierLists = ... var query = from suppliers in supplierLists from supplier in suppliers group supplier by supplier.supplierCode into g let products = g.SelectMany(s => s.ResortProducts) .GroupBy(p => p.Code) .Select(prodGroup => new Product { Code = prodGroup.Key,PricingDetail = prodGroup .SelectMany(p => p.PricingDetail) .ToList() }) select new Resortsupplier { supplierCode = g.Key,ResortProducts = products.ToList() };
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。