/// <summary> /// 数据 /// </summary> /// <returns></returns> private DataTable CreateTable() { DataTable dt = new DataTable(); dt.Columns.Add("LX"); dt.Columns.Add("JXLX"); dt.Columns.Add("FZ"); dt.Columns.Add("PF"); dt.Columns.Add("PJZ"); dt.Columns.Add("FZZ"); dt.Columns.Add("JL"); dt.Columns.Add("U"); dt.Columns.Add("I"); dt.Columns.Add("JTCS"); dt.Columns.Add("YCQ"); dt.Columns.Add("MCWUYX"); dt.Rows.Add("220;5", "合元[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;5", "合元[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;5", "合元[三相四线]有功", "最小", "0.5C"); dt.Rows.Add("220;5", "A相[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;5", "A相[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;5", "A相[三相四线]有功", "最小", "0.5C"); dt.Rows.Add("220;5", "B相[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;5", "B相[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;5", "B相[三相四线]有功", "最小", "0.5C"); dt.Rows.Add("220;5", "C相[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;5", "C相[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;5", "C相[三相四线]有功", "最小", "0.5C"); dt.Rows.Add("220;5", "合元[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;5", "合元[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("220;5", "合元[三相四线]有功", "最大", "0.5C"); dt.Rows.Add("220;5", "A相[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;5", "A相[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("220;5", "A相[三相四线]有功", "最大", "0.5C"); dt.Rows.Add("220;5", "B相[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;5", "B相[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("220;5", "B相[三相四线]有功", "最大", "0.5C"); dt.Rows.Add("220;5", "C相[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;5", "C相[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("220;5", "C相[三相四线]有功", "最大", "0.5C"); dt.Rows.Add("100;5", "合元[三相三线]有功", "最小", "1.0"); dt.Rows.Add("100;5", "合元[三相三线]有功", "最小", "0.5L"); dt.Rows.Add("100;5", "合元[三相三线]有功", "最小", "0.5C"); dt.Rows.Add("100;5", "A相[三相三线]有功", "最小", "1.0"); dt.Rows.Add("100;5", "A相[三相三线]有功", "最小", "0.5L"); dt.Rows.Add("100;5", "A相[三相三线]有功", "最小", "0.5C"); dt.Rows.Add("100;5", "C相[三相三线]有功", "最小", "1.0"); dt.Rows.Add("100;5", "C相[三相三线]有功", "最小", "0.5L"); dt.Rows.Add("100;5", "C相[三相三线]有功", "最小", "0.5C"); dt.Rows.Add("100;5", "合元[三相三线]有功", "最大", "1.0"); dt.Rows.Add("100;5", "合元[三相三线]有功", "最大", "0.5L"); dt.Rows.Add("100;5", "合元[三相三线]有功", "最大", "0.5C"); dt.Rows.Add("100;5", "A相[三相三线]有功", "最大", "1.0"); dt.Rows.Add("100;5", "A相[三相三线]有功", "最大", "0.5L"); dt.Rows.Add("100;5", "A相[三相三线]有功", "最大", "0.5C"); dt.Rows.Add("100;5", "C相[三相三线]有功", "最大", "1.0"); dt.Rows.Add("100;5", "C相[三相三线]有功", "最大", "0.5L"); dt.Rows.Add("100;5", "C相[三相三线]有功", "最大", "0.5C"); dt.Rows.Add("220;100", "合元[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;100", "合元[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;100", "合元[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;100", "合元[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("220;60", "合元[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;60", "合元[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;60", "合元[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;60", "合元[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("220;40", "合元[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;40", "合元[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;40", "合元[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;40", "合元[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("220;20", "合元[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;20", "合元[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;20", "合元[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;20", "合元[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("220;10", "合元[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;10", "合元[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;10", "合元[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;10", "合元[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("220;1", "合元[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;1", "合元[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;1", "合元[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;1", "合元[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("220;0.1", "合元[三相四线]有功", "最小", "1.0"); dt.Rows.Add("220;0.1", "合元[三相四线]有功", "最小", "0.5L"); dt.Rows.Add("220;0.1", "合元[三相四线]有功", "最大", "1.0"); dt.Rows.Add("220;0.1", "合元[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("100;100", "合元[三相三线]有功", "最小", "1.0"); dt.Rows.Add("100;100", "合元[三相三线]有功", "最小", "0.5L"); dt.Rows.Add("100;100", "合元[三相三线]有功", "最大", "1.0"); dt.Rows.Add("100;100", "合元[三相三线]有功", "最大", "0.5L"); dt.Rows.Add("100;60", "合元[三相三线]有功", "最小", "1.0"); dt.Rows.Add("100;60", "合元[三相三线]有功", "最小", "0.5L"); dt.Rows.Add("100;60", "合元[三相三线]有功", "最大", "1.0"); dt.Rows.Add("100;60", "合元[三相三线]有功", "最大", "0.5L"); dt.Rows.Add("100;40", "合元[三相三线]有功", "最小", "1.0"); dt.Rows.Add("100;40", "合元[三相三线]有功", "最小", "0.5L"); dt.Rows.Add("100;40", "合元[三相三线]有功", "最大", "1.0"); dt.Rows.Add("100;40", "合元[三相三线]有功", "最大", "0.5L"); dt.Rows.Add("100;20", "合元[三相三线]有功", "最小", "1.0"); dt.Rows.Add("100;20", "合元[三相三线]有功", "最小", "0.5L"); dt.Rows.Add("100;20", "合元[三相三线]有功", "最大", "1.0"); dt.Rows.Add("100;20", "合元[三相三线]有功", "最大", "0.5L"); dt.Rows.Add("100;10", "合元[三相三线]有功", "最小", "1.0"); dt.Rows.Add("100;10", "合元[三相三线]有功", "最小", "0.5L"); dt.Rows.Add("100;10", "合元[三相三线]有功", "最大", "1.0"); dt.Rows.Add("100;10", "合元[三相三线]有功", "最大", "0.5L"); dt.Rows.Add("100;1", "合元[三相三线]有功", "最小", "1.0"); dt.Rows.Add("100;1", "合元[三相三线]有功", "最小", "0.5L"); dt.Rows.Add("100;1", "合元[三相三线]有功", "最大", "1.0"); dt.Rows.Add("100;1", "合元[三相三线]有功", "最大", "0.5L"); dt.Rows.Add("100;0.1", "合元[三相三线]有功", "最小", "1.0"); dt.Rows.Add("100;0.1", "合元[三相三线]有功", "最小", "0.5L"); dt.Rows.Add("100;0.1", "合元[三相三线]有功", "最大", "1.0"); dt.Rows.Add("100;0.1", "合元[三相三线]有功", "最大", "0.5L"); dt.Rows.Add("57.7;5", "合元[三相四线]有功", "最大", "1.0"); dt.Rows.Add("57.7;5", "合元[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("57.7;5", "合元[三相四线]有功", "最大", "0.5C"); dt.Rows.Add("57.7;5", "A相[三相四线]有功", "最大", "1.0"); dt.Rows.Add("57.7;5", "A相[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("57.7;5", "A相[三相四线]有功", "最大", "0.5C"); dt.Rows.Add("57.7;5", "B相[三相四线]有功", "最大", "1.0"); dt.Rows.Add("57.7;5", "B相[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("57.7;5", "B相[三相四线]有功", "最大", "0.5C"); dt.Rows.Add("57.7;5", "C相[三相四线]有功", "最大", "1.0"); dt.Rows.Add("57.7;5", "C相[三相四线]有功", "最大", "0.5L"); dt.Rows.Add("57.7;5", "C相[三相四线]有功", "最大", "0.5C"); return dt; } private int GetSortPriority(string testResult) { switch (testResult) { case "0.5L": return 1; case "1.0": return 2; case "0.5C": return 3; default: return 99; // 未知值放在最后 } } public void DataHandler() { DataTable dataTable = CreateTable(); // 从 DataTable 中获取数据并进行分组 var groupedData = dataTable.AsEnumerable() .GroupBy(row => new { 量限 = row.Field<string>("LX"), // 假设“量限(V,A)”列的数据类型是 string 负载 = row.Field<string>("FZ") // 假设“负载”列的数据类型是 string }); //遍历每一组数据 foreach (var group in groupedData) { Console.WriteLine($"===== 量限: {group.Key.量限}, 负载: {group.Key.负载} ====="); Console.WriteLine("组内数据行:"); // 先按"其它字段"排序,再按测试结果的自定义顺序排序 var sortedRows = group .OrderBy(row => row.Field<string>("JXLX")) // 先按其它字段排序 .ThenBy(row => GetSortPriority(row.Field<string>("PF"))); // 再按测试结果排序 //遍历组内排序后的数据 foreach (var row in sortedRows) { Console.WriteLine($"LX: {row.Field<string>("LX")}, " + $"FZ: {row.Field<string>("FZ")}, " + $"PF: {row.Field<string>("PF")}, " + $"JXLX: {row.Field<string>("JXLX")}"); // 根据实际字段类型调整 } } }
本文来自 www.LuoFenMing.com