• LINQ系列:Linq to Object元素操作符


      元素操作符从一个序列返回单个指定的元素。

    1. DefaultIfEmpty

      DefaultIfEmpty操作符将一个空集合替换为包含默认的单个值的集合。在返回序列为空且又需要返回一些对象时,可以通过该操作符返回一个默认值。

    1>. 原型定义

    public static IQueryable<TSource> DefaultIfEmpty<TSource>(this IQueryable<TSource> source);
    public static IQueryable<TSource> DefaultIfEmpty<TSource>(this IQueryable<TSource> source, TSource defaultValue);

    2>. 示例

    var expr = from p in contex.Products
               select p.ProductName;
    
    foreach (var item in expr.DefaultIfEmpty())
    {
        Console.WriteLine(item);
    }

    2. ElementAt

      ElementAt操作符返回集合中给定索引处的元素。集合索引从0开始计的,返回值是数据源中指定位置的元素。

    1>. 原型定义

    public static TSource ElementAt<TSource>(this IEnumerable<TSource> source, int index);

    2>. 示例

    int[] fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
    fibonacci.ElementAt(0);

    3. ElementAtOrDefault

      ElementAtOrDefault操作符将ElementAt操作符和DefaultIfEmpty操作符的部分功能结合在一起,返回在指定索引处的元素。如果索引超出范围则返回默认值。

    1>. 原型定义

    public static TSource ElementAtOrDefault<TSource>(this IEnumerable<TSource> source, int index);

    2>. 示例

    int[] fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
    fibonacci.ElementAtOrDefault(0);

    4. First

      First操作符返回集合中的第一个元素,如果数据源不包含任何元素,此方法将抛出一个异常。

    1>. 原型定义

    public static TSource First<TSource>(this IQueryable<TSource> source);
    public static TSource First<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);

    2>. 示例

    var expr = context.Products.First();
    var expr = context.Products.First(p => p.UnitPrice > 10m);

    5. FirstOrDefault

      FirstOrDefault操作符返回集合中的第一个元素,或者如果没有发现任何元素则返回默认值。

    1>. 原型定义

    public static TSource FirstOrDefault<TSource>(this IQueryable<TSource> source);
    public static TSource FirstOrDefault<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);

    2>. 示例

    var expr = context.Products.FirstOrDefault();
    var expr = context.Products.FirstOrDefault(p => p.UnitPrice > 10m);

    6. Last

      Last操作符返回集合中的最后一个元素,如果数据源不包含任何元素,此方法将抛出一个异常。

    1>. 原型定义

    public static TSource Last<TSource>(this IQueryable<TSource> source);
    public static TSource Last<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);

    2>. 示例

    var expr = context.Products.Last();
    var expr = context.Products.Last(p => p.UnitPrice > 10m);

    7. LastOrDefault

      LastOrDefault操作符返回集合中的最后一个元素,或者如果没有找到任何元素则返回一个默认值。

    1>. 原型定义

    public static TSource LastOrDefault<TSource>(this IQueryable<TSource> source);
    public static TSource LastOrDefault<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);

    2>. 示例

    var expr = context.Products.LastOrDefault();
    var expr = context.Products.LastOrDefault(p => p.UnitPrice > 10m);

    8. Single

      Single操作符从一个序列中返回单个元素,或唯一满足指定条件的元素,如果数据源不包含任何元素,此方法将抛出一个异常。

    1>. 原型定义

    public static TSource Single<TSource>(this IQueryable<TSource> source);
    public static TSource Single<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);

    2>. 示例

    var expr = context.Products.Single();
    var expr = context.Products.Single(p => p.UnitPrice > 10m);

    9. SingleOrDefault

      SingleOrDefault操作符从一个序列中返回单个元素,如果没有发现元素则返回一个默认值。

    1>. 原型定义

    public static TSource SingleOrDefault<TSource>(this IQueryable<TSource> source);
    public static TSource SingleOrDefault<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);

    2>. 示例

    var expr = context.Products.SingleOrDefault();
    var expr = context.Products.SingleOrDefault(p => p.UnitPrice > 10m);
  • 相关阅读:
    [原创]中值滤波算法处理位图(C#实现)
    vue3弹窗可以拖曳、放大、缩小、最大化、最小化插件
    请博客园的高手们帮忙看一个问题 为什么 set datefirst 1 写到存储过程中就不起作用了.
    Sql server学习笔记 set 注意事项
    Sql server 学习笔记全局变量
    使用C# 发送Email 邮件方法
    给安装Visual Studio 2010遇到的一些问题建议
    IIS建立网站后显示“403.1禁止访问”的解决方法
    Window xp 换成Windows 7 C盘内留有老的windows 版本提示
    COUNT() 和Count(字段) 区别
  • 原文地址:https://www.cnblogs.com/libingql/p/4043566.html
Copyright © 2020-2023  润新知