下面是“C#使用linq对数组进行筛选排序的方法”的完整攻略。
1. 筛选数组
使用linq对数组进行筛选的方式有很多,下面介绍几种比较常用的方法。
1.1. Where
使用Where方法可以对数组进行筛选,例如筛选出数组中大于等于10的元素,可以这样写:
int[] arr = { 1, 5, 8, 10, 13, 15 };
var filteredArr = arr.Where(x => x >= 10);
其中,Where方法的参数是一个Lambda表达式,这个表达式用来描述筛选条件。上面的代码中,Lambda表达式是x => x >= 10,也就是筛选出大于等于10的元素。
1.2. Take和Skip
使用Take方法可以取数组的前几个元素,使用Skip方法可以跳过数组的前几个元素。例如取数组的前3个元素,可以这样写:
int[] arr = { 1, 5, 8, 10, 13, 15 };
var filteredArr = arr.Take(3);
而跳过数组的前3个元素,可以这样写:
int[] arr = { 1, 5, 8, 10, 13, 15 };
var filteredArr = arr.Skip(3);
2. 排序数组
使用linq对数组进行排序的方式也有很多,下面介绍几种比较常用的方法。
2.1. OrderBy和ThenBy
使用OrderBy方法可以对数组进行升序排序,使用ThenBy方法可以对数组进行降序排序。例如按照元素从小到大排序,可以这样写:
int[] arr = { 13, 1, 15, 10, 8, 5 };
var sortedArr = arr.OrderBy(x => x);
而按照元素从大到小排序,则可以这样写:
int[] arr = { 13, 1, 15, 10, 8, 5 };
var sortedArr = arr.OrderByDescending(x => x);
如果要根据元素的多个属性进行排序,则需要使用ThenBy方法,例如先按照元素的奇偶性进行排序,再按照元素从小到大的顺序排序,可以这样写:
int[] arr = { 13, 1, 15, 10, 8, 5 };
var sortedArr = arr.OrderBy(x => x % 2).ThenBy(x => x);
这里先根据元素的奇偶性进行排序,再根据元素从小到大的顺序进行排序。
示例说明
下面对上面的筛选和排序过程进行两个示例说明。
示例1:筛选和排序数组
假设有一个含有10个元素的整数数组:
int[] arr = { 3, 6, 9, 2, 4, 1, 8, 5, 10, 7 };
现在要求筛选出其中所有大于等于6的元素,并按照元素从小到大的顺序排序。可以这样写:
var filteredArr = arr.Where(x => x >= 6).OrderBy(x => x);
其中,Where方法的参数是一个Lambda表达式,这个表达式用来描述筛选条件,这里筛选出大于等于6的元素。OrderBy方法用来对筛选的结果进行排序,这里按照元素从小到大的顺序排序。
示例2:使用Take方法获取前几个元素
假设有一个含有20个元素的整数数组:
int[] arr = Enumerable.Range(1, 20).ToArray();
现在要求获取该数组中的前5个元素,并将其打印输出。可以这样写:
var takeArr = arr.Take(5);
foreach (var item in takeArr)
{
Console.WriteLine(item);
}
注意:这里Take方法返回的是一个新的IEnumerable集合,需要使用foreach逐个遍历输出其中的元素。输出结果为:
1
2
3
4
5
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用linq对数组进行筛选排序的方法 - Python技术站