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

libingql發表於2014-10-22

  元素操作符從一個序列返回單個指定的元素。

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);

相關文章