c#中有一个对象集合,对象包含一个int属性,如和按照该属性的大小对集合进行排序?
时间: 2024-03-13 18:43:18 浏览: 23
您可以使用LINQ中的OrderBy方法来对集合进行排序,比如假设您有一个名为objList的对象集合,其中的每个对象包含一个名为intProp的int属性,您可以使用以下代码来按照intProp的大小对该集合进行升序排序:
```
var sortedList = objList.OrderBy(o => o.intProp).ToList();
```
如果您想要降序排序,可以使用OrderByDescending方法:
```
var sortedList = objList.OrderByDescending(o => o.intProp).ToList();
```
其中ToList方法将排序后的结果转换为一个新的List集合并返回。
相关问题
c# 遍历部门集合 设置 Level,IsLeaf,Expanded 等属性 需要符合jqgrid 树形表格结构 按照数据进行排序
假设你有一个部门集合 `List<Department>`,其中每个部门对象有如下属性:
```csharp
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
public int ParentId { get; set; }
public int Level { get; set; }
public bool IsLeaf { get; set; }
public bool Expanded { get; set; }
}
```
其中 `Id` 是部门的唯一标识,`Name` 是部门名称,`ParentId` 是父部门的标识,`Level` 是部门所在的层级,`IsLeaf` 表示该部门是否是叶子节点,`Expanded` 表示该节点是否默认展开。
为了符合 jqGrid 树形表格的结构,需要进行如下处理:
1. 对部门集合进行排序,按照 `ParentId` 和 `Id` 排序。这样可以保证父节点在前,子节点在后的顺序。
```csharp
var sortedDepartments = departments.OrderBy(d => d.ParentId).ThenBy(d => d.Id).ToList();
```
2. 遍历部门集合,设置每个部门的 `Level`、`IsLeaf` 和 `Expanded` 属性。
```csharp
foreach (var department in sortedDepartments)
{
int parentId = department.ParentId;
if (parentId == 0)
{
// 根节点
department.Level = 0;
department.IsLeaf = false;
department.Expanded = true;
}
else
{
// 非根节点
var parentDepartment = sortedDepartments.SingleOrDefault(d => d.Id == parentId);
if (parentDepartment != null)
{
department.Level = parentDepartment.Level + 1;
department.IsLeaf = true;
parentDepartment.IsLeaf = false;
parentDepartment.Expanded = true;
}
}
}
```
上述代码中,首先判断当前部门是否为根节点(即 `ParentId` 为 0),如果是根节点,则将其 `Level` 设为 0,`IsLeaf` 设为 false(因为根节点一定不是叶子节点),`Expanded` 设为 true(因为根节点默认展开)。
如果当前部门不是根节点,则找到其父部门对象,计算当前部门的 `Level`,并将父部门的 `IsLeaf` 设为 false(因为父部门肯定是非叶子节点),`Expanded` 设为 true(因为父部门默认展开)。
最后遍历完部门集合后,每个部门对象就都符合 jqGrid 树形表格的结构了。
c# ObservableCollection对象集合如何按其中某个属性降序排列
如果你想按照ObservableCollection中某个属性来进行降序排列,可以使用LINQ(Language Integrated Query)语句来实现。首先,你需要引入System.Linq命名空间。然后,你可以使用OrderByDescending方法来按照指定属性进行降序排列。下面是一个示例代码:
假设你有一个Student类,其中有两个属性Name和Score,你想按照Score属性进行降序排列:
```csharp
using System.Collections.ObjectModel;
using System.Linq;
// 定义Student类
public class Student
{
public string Name { get; set; }
public int Score { get; set; }
}
// 创建ObservableCollection<Student>集合
ObservableCollection<Student> students = new ObservableCollection<Student>();
// 添加几个学生对象
students.Add(new Student { Name = "Tom", Score = 90 });
students.Add(new Student { Name = "Jerry", Score = 80 });
students.Add(new Student { Name = "Alice", Score = 95 });
// 按照Score属性进行降序排列
var sortedStudents = students.OrderByDescending(s => s.Score);
// 遍历排序后的集合
foreach (var student in sortedStudents)
{
Console.WriteLine(student.Name + " " + student.Score);
}
```
输出结果:
```
Alice 95
Tom 90
Jerry 80
```
在上面的代码中,我们使用了OrderByDescending方法来按照Score属性进行降序排列,然后遍历了排序后的集合。