Single()和SingleOrDefault() 方法定义:当有且仅有一条满足条件的数据时,返回该数据。而当集合中存在多个满足条件的数据时,Single和SingleOrDefault方法都会报错。
public static TSource Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
该方法同样存在不含筛选条件的重载:
public static TSource Single<TSource>(this IEnumerable<TSource> source)
SingleOrDefault()方法与Single()方法的不同之处在于,当SingleOrDefault()方法遇到没有数据满足条件的情况时,会有一个默认的返回值。根据数据类型的不同,返回值也会不同。与Single()方法相同的是,SingleOrDefault()方法同样有带条件与不带条件的两个版本。
First()和FirstOrDefault() 方法定义:当至少有一条数据满足条件时,返回第一条符合条件的数据。
public static TSource First<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
不含条件的重载:
public static TSource First<TSource>(this IEnumerable<TSource> source)
FirstOrDefault()方法与First()方法的不同之处在于,First()方法在遇到没有数据满足条件的情况时会直接报错,而FirstOrDefault()方法则会返回一个默认值。根据数据类型的不同,返回值也会不同。
OrderBy() 方法定义:对数据进行升序排序。
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) =>
new OrderedEnumerable<TSource, TKey>(source, keySelector, null, false, null);
该方法还可以使用指定的比较器来使数据按升序排序:
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IComparer<TKey>? comparer) =>
new OrderedEnumerable<TSource, TKey>(source, keySelector, comparer, false, null);
OrderByDescending() 方法定义:对数据进行降序排序。
public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) =>
new OrderedEnumerable<TSource, TKey>(source, keySelector, null, true, null);
该方法同样拥有使用指定比较器来进行降序排序的重载:
public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IComparer<TKey>? comparer) =>
new OrderedEnumerable<TSource, TKey>(source, keySelector, comparer, true, null);
ThenBy() 方法定义:在某种情况下使用其他排序规则进行排序。 例:对Employee中的数据首先使用Age属性进行排序,当出现Age属性相同的情况时,对Age属性相同的数据使用Salary属性进行排序。代码如下:
list.OrderBy(e => e.Age).ThenBy(e => e.Salary);
ThenBy()方法与OrderBy()方法相同,默认使用升序规则。如果进行降序排序,可以使用ThenByDescending()方法。 ThenBy()方法和ThenByDescending()方法都有使用指定比较器来进行排序的重载。
Skip() 方法定义:跳过n条数据。
Take() 方法定义:获取n条数据。
注意:Skip()和Take()方法是可以一起使用的。例如var result = list.Skip(3).Take(2)
,这段代码表示先跳过3条数据,之后获取两条数据返回给result。
方法 | 作用 | 返回值 |
---|---|---|
Single | 当仅有一条符合条件的数据时,返回该数据 | TSource |
SingleOrDefault | 当仅有一条符合条件的数据时,返回该数据。当没有符合的数据时,返回默认值 | TSource |
First | 当至少有一条符合条件的数据时,返回第一条数据 | TSource |
FirstOrDefault | 当至少有一条符合条件的数据时,返回第一条数据。当没有符合条件的数据时,返回默认值 | TSource |
OrderBy | 将数据进行升序排序 | IOrderedEnumerable<> |
OrderByDescending | 将数据进行降序排序 | IOrderedEnumerable<> |
ThenBy | 多规则排序,升序规则 | IOrderedEnumerable<> |
ThenByDescending | 多规则排序,降序规则 | IOrderedEnumerable<> |
Skip | 跳过n条数据 | IEnumerable |
Take | 获取n条数据 | IEnumerable |
本文章使用limfx的vscode插件快速发布