遍历
在遍历的时候,我们尽量不要对List进行遍历,因为List的长度是可变的,如果遍历的时候发生改变,就会报错。
推荐在遍历前把List转为Array
1 | OnlineUser[] onlineUserArr = ZCommonData.OnlineUserList.ToArray(); |
子列表(分页)
对于列表
在C#中,你可以使用List<T>
类的GetRange
方法来获取一个列表的子列表。GetRange
方法接受两个参数,第一个是子列表的起始索引,第二个是子列表的长度。
1 | using System; |
对于ObservableCollection
ObservableCollection<T>
类并没有提供类似List<T>
的GetRange
方法。
如果你想从一个ObservableCollection<T>
中获取子集,你可以使用 LINQ 查询来实现。
以下是一个示例:
1 | using System; |
在上述示例中,我们使用Skip
方法跳过前两个元素,然后使用Take
方法获取接下来的三个元素,从而创建了一个子集。
数组项处理
使用 LINQ 查询来实现将列表中的每个元素拼接一个固定字符串,并生成一个新的列表。
以下是一个示例:
1 | List<int> numbers = new List<int> |
数组展平
二维数组变成一维数组
SelectMany
方法可以用于将多个集合合并成一个集合。
以下是一个示例:
1 | using System; |
在上述示例中,我们使用Cast<int>()
方法将二维数组中的元素转换为int
类型,然后使用ToArray
方法将结果转换为一个一维数组。
数组聚合操作
数组聚合操作是指在数组中对元素进行计算或者合并的操作。
这些操作通常包括对数组中的元素进行求和、计算平均值、找到最大值或最小值等等。
在C#中,可以使用LINQ(Language Integrated Query)来执行各种数组聚合操作。
LINQ提供了一套丰富的操作符和方法,可以方便地对数组进行查询和转换。
以下是一些常见的数组聚合操作示例:
- 求和(Sum):
1 | int[] numbers = { 1, 2, 3, 4, 5 }; |
- 计算平均值(Average):
1 | int[] numbers = { 1, 2, 3, 4, 5 }; |
- 找到最大值(Max):
1 | int[] numbers = { 1, 2, 3, 4, 5 }; |
- 找到最小值(Min):
1 | int[] numbers = { 1, 2, 3, 4, 5 }; |
- 统计符合条件的元素个数(Count):
1 | int[] numbers = { 1, 2, 3, 4, 5 }; |
- 检查是否存在符合条件的元素(Any):
1 | int[] numbers = { 1, 2, 3, 4, 5 }; |
这只是一些示例,实际上还有许多其他的数组聚合操作可以执行,具体取决于你的需求和使用场景。
LINQ 提供了丰富的方法和操作符来支持各种数据查询和转换操作。
查找元素索引
你可以使用 LINQ 查询或者循环来在列表中查找符合条件的索引。
以下是两种方法的示例:
方法一:使用 LINQ 查询
1 | using System; |
在上述示例中,我们使用了 List<T>.FindIndex
方法和一个 lambda 表达式来查找符合条件的元素索引。
方法二:使用循环
1 | using System; |
在这个示例中,我们使用一个简单的 for
循环来遍历列表,检查每个元素是否符合条件。
无论使用哪种方法,都可以在列表中查找符合条件的索引。如果找到了符合条件的元素,将返回该元素的索引;如果未找到,则返回一个指示未找到的值(通常是 -1)。
List判断是否包含
1 | using System; |
项目实例
1 | List<ClassStudentModel> allStudentList = ZCommonData.AllStuList; |
数组索引
C#数组对象自身没有获取索引的方法,要用Array.IndexOf
方法。
要获取 C# 数组中某个元素的索引,你可以使用Array.IndexOf
方法或者自己编写一个循环进行搜索。
使用Array.IndexOf
方法的语法如下所示:
1 | int index = Array.IndexOf(array, value); |
其中,array
是要搜索的数组,value
是要查找的元素。如果找到了该元素,index
将返回其在数组中的索引;如果未找到,index
将返回-1。
以下是一个示例:
1 | int[] numbers = { 2, 4, 6, 8, 10 }; |
输出结果为:
1 | 元素6的索引为:2 |
列表排序
单字段排序
随机排序
1 | List<ClassStudentModel> randomUserList = allUserList.OrderBy(x => Guid.NewGuid()).ToList(); |
正序
1 | List<ClassStudentModel> randomUserList = allUserList.OrderBy(x => x.num).ToList(); |
倒序
1 | List<ClassStudentModel> randomUserList = allUserList.OrderByDescending(x => x.num).ToList(); |
多次排序
随机排序后再按字段正序
1 | List<ClassStudentModel> randomUserList = allUserList.OrderBy(x => Guid.NewGuid()).ToList().OrderBy(x => x.num).ToList(); |
随机排序后再按字段倒序
1 | List<ClassStudentModel> randomUserList = allUserList.OrderBy(x => Guid.NewGuid()).ToList().OrderByDescending(x => x.num).ToList(); |
多字段同时排序
两个字段排序 先按Name正序再按num正序
1 | List<ClassStudentModel> randomUserList = allUserList.OrderBy(x => x.Name).ThenBy(x => x.num).ToList(); |
两个字段排序 先按Name正序再按num倒序
1 | List<ClassStudentModel> randomUserList = allUserList.OrderBy(x => x.Name).ThenByDescending(x => x.num).ToList(); |