Csharp/C#教程:DataTable上的复杂GROUP BY分享


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() }); }); 
  1. 我们如何从DataTable创建所需的List

参考

  1. 如何将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

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐