DataTable上的复杂GROUP BY
我有一个复杂的实体CostPageDTO
,如下所示:
public class CostPageDTO { public string CostPageNumber { get; set; } public string Description { get; set; } public char OrderType { get; set; } public string VendorName { get; set; } public List Items { get; set; } } public class ItemDTO { public string BrandCode { get; set; } public string ItemDescription { get; set; } public string ItemID { get; set; } }
我们需要从数据表创建List
。 我开始如下所示:但我不知道如何在此处应用GROUP BY子句在List
创建List
。
DataTable table = new DataTable(); SqlDataReader reader = command.ExecuteReader(); table.Load(reader); reader.Close(); List costPages = new List(); Parallel.ForEach(table.AsEnumerable(), (dr) => { costPages.Add(new CostPageDTO() { CostPageNumber = dr[0].ToString(), Description = dr[1].ToString(), OrderType = Convert.ToChar(dr[2].ToString()), VendorName = dr[3].ToString() }); });
- 我们如何从DataTable创建所需的List
参考
- 如何将DataTable转换为通用列表?
我假设您的数据库查询返回CostPage和Item之间的连接。 如果是这种情况,首先必须将行分组以获取CostPage的值,在该项目之后获取DTO类型。 我真的怀疑你会看到并行化代码的好处。
您的代码应该大致如下所示:
上述就是C#学习教程:DataTable上的复杂GROUP BY分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
costPages = table.AsEnumerable().GroupBy(dr=> new { CostPageNumber = dr[0].ToString(), Description = dr[1].ToString(), OrderType = Convert.ToChar(dr[2].ToString()), VendorName = dr[3].ToString() }) .Select(x => new CostPageDTO(){ CostPageNumber = x.Key.CostPageNumber, Description = x.Key.Description, OrderType = x.Key.OrderType, VendorName = x.Key.VendorName, Items = x.Select(dr=> new ItemDTO{ //ItemDTO mapping goes here ItemID=dr[Constants.SearchPage.ITMID].ToString() }).ToList() }).ToList();
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1013495.html