C#对DataTable中的某列进行分组

这篇文章介绍了C#对DataTable某列进行分组的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

有时候我们从数据库中查询出来数据之后,需要按照DataTable的某列进行分组,可以使用下面的方法实现,代码如下:

using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DataTableGroupDemo { class Program { static void Main(string[] args) { // 准备数据 DataTable dt = new DataTable(); // 创建列 DataColumn dcName = new DataColumn("Name", typeof(string)); DataColumn dcAge = new DataColumn("Age", typeof(Int32)); DataColumn dcScore = new DataColumn("Score", typeof(Int32)); // 添加列 dt.Columns.Add(dcName); dt.Columns.Add(dcAge); dt.Columns.Add(dcScore); // 添加数据 dt.Rows.Add(new object[] { "Tom", 23, 67 }); dt.Rows.Add(new object[] { "Tom", 23, 67 }); dt.Rows.Add(new object[] { "Jack", 21, 100 }); dt.Rows.Add(new object[] { "Greey", 24, 56 }); dt.Rows.Add(new object[] { "Kevin", 24, 77 }); dt.Rows.Add(new object[] { "Tom", 23, 82 }); dt.Rows.Add(new object[] { "Greey", 24, 80 }); dt.Rows.Add(new object[] { "Jack", 21, 90 }); #region 使用Linq expression to DataTable group by var query = from p in dt.AsEnumerable() group p by new { name = p.Field("Name"),score=p.Field("Score") } into m select new { Name = m.Key.name, Score=m.Key.score }; #endregion // 输出 Console.WriteLine("Linq"); foreach (var item in query) { Console.WriteLine(item); } Console.WriteLine("GroupBy"); IEnumerable> result = dt.Rows.Cast().GroupBy(dr => dr["Name"].ToString()); foreach (IGrouping ig in result) { Console.WriteLine("key=" + ig.Key + ":"); foreach (DataRow dr in ig) { Console.WriteLine(dr["Name"].ToString().PadRight(10) + dr["Age"].ToString().PadRight(10) + dr["Score"].ToString().PadRight(10)); } } Console.ReadKey(); } } }

程序运行效果

到此这篇关于C#对DataTable某列进行分组的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持0133技术站。

以上就是C#对DataTable中的某列进行分组的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 其他教程