新增文章
文章标题
分类
C#
云星空
K3 BOS
K3 功能
用友
Oracle
python
SQL
MySql
PHP
HTML
script
windows
Access
影视后期
财务
服务
生活
内容
要对 `aList1` 进行排序,可以使用 `List<T>.Sort` 方法或 LINQ 的 `OrderBy` 方法。由于 `aList1` 是一个包含动态对象的列表,你可以根据动态对象的属性进行排序。 假设你想根据 `Id` 属性对 `aList1` 进行升序排序,可以使用以下代码: ### 使用 `List<T>.Sort` 方法 ```csharp aList1.Sort((x, y) => Comparer<int>.Default.Compare(x.Id, y.Id)); ``` ### 使用 LINQ 的 `OrderBy` 方法 ```csharp aList1 = aList1.OrderBy(x => x.Id).ToList(); ``` 如果你想根据多个属性进行排序,比如先按 `FMaterialId` 排序,再按 `FAppQty` 排序,可以使用以下代码: ### 使用 `List<T>.Sort` 方法 ```csharp aList1.Sort((x, y) => { int result = Comparer<int>.Default.Compare(x.FMaterialId, y.FMaterialId); if (result == 0) { result = Comparer<decimal>.Default.Compare(x.FAppQty, y.FAppQty); } return result; }); ``` ### 使用 LINQ 的 `OrderBy` 方法 ```csharp aList1 = aList1.OrderBy(x => x.FMaterialId).ThenBy(x => x.FAppQty).ToList(); ``` ### 示例代码 假设你想根据 `FMaterialId` 和 `FAppQty` 进行排序,完整的代码如下: ```csharp using System; using System.Collections.Generic; using System.Dynamic; using System.Linq; public class Program { public static void Main() { var aList1 = new List<dynamic>(); // 分摊清单 var aEntitySum = new List<dynamic>(); // 假设这是你的数据源 var i = -1; foreach (var aRow1 in aEntitySum) { i++; var aFMaterialId = Convert.ToInt32(((DynamicObject)aRow1["F_RVFJ_CLBM"])["Id"]); // 材料编码 var aFUnitId = Convert.ToInt32(((DynamicObject)aRow1["F_RVFJ_KCDW"])["Id"]); // 单位 var aFSource = Convert.ToString(aRow1["F_Source2"]); // 数据来源 var aEntitySub = aRow1["F_EntitySub"] as DynamicObjectCollection; // 汇总来源 foreach (var aRow2 in aEntitySub) { var aFRowId = Convert.ToInt32(aRow2["F_RowId2"]); // 行标识 var aFAppQty = Convert.ToDecimal(aRow2["F_Qty1"]); // 申请数量 var aFActualQty = Convert.ToDecimal(aRow2["F_Qty2"]); // 分摊实耗数量 = 实发数量 dynamic newItem = new ExpandoObject(); newItem.Id = i + 1; // 顺序 newItem.F_RowId = aFRowId; // 行标识 newItem.F_Source1 = aFSource; // 数据来源 newItem.FMaterialId = aFMaterialId; // 物料编码 newItem.FUnitId = aFUnitId; // 单位 newItem.FAppQty = aFAppQty; // 申请数量 newItem.FActualQty = aFActualQty; // 实发数量 aList1.Add(newItem); } } // 使用 LINQ 进行排序 aList1 = aList1.OrderBy(x => x.FMaterialId).ThenBy(x => x.FAppQty).ToList(); // 或者使用 List.Sort 进行排序 aList1.Sort((x, y) => { int result = Comparer<int>.Default.Compare(x.FMaterialId, y.FMaterialId); if (result == 0) { result = Comparer<decimal>.Default.Compare(x.FAppQty, y.FAppQty); } return result; }); // 输出排序后的结果 foreach (var item in aList1) { Console.WriteLine($"Id: {item.Id}, FMaterialId: {item.FMaterialId}, FAppQty: {item.FAppQty}"); } } } ``` 在这个示例中,`aList1` 会根据 `FMaterialId` 和 `FAppQty` 进行排序。你可以根据需要调整排序的属性和顺序。
返回
保存