/// <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