# System.Linq

``` diff
 namespace System.Linq {
     public static class Enumerable {
+        public static TSource ElementAt<TSource>(this IEnumerable<TSource> source, Index index);
+        public static TSource ElementAtOrDefault<TSource>(this IEnumerable<TSource> source, Index index);
+        public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate, TSource defaultValue);
+        public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, TSource defaultValue);
+        public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate, TSource defaultValue);
+        public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source, TSource defaultValue);
+        public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate, TSource defaultValue);
+        public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source, TSource defaultValue);
+        public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, Range range);
     }
     public static class Queryable {
+        public static TSource ElementAt<TSource>(this IQueryable<TSource> source, Index index);
+        public static TSource ElementAtOrDefault<TSource>(this IQueryable<TSource> source, Index index);
+        public static TSource FirstOrDefault<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate, TSource defaultValue);
+        public static TSource FirstOrDefault<TSource>(this IQueryable<TSource> source, TSource defaultValue);
+        public static TSource LastOrDefault<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate, TSource defaultValue);
+        public static TSource LastOrDefault<TSource>(this IQueryable<TSource> source, TSource defaultValue);
+        public static TSource SingleOrDefault<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate, TSource defaultValue);
+        public static TSource SingleOrDefault<TSource>(this IQueryable<TSource> source, TSource defaultValue);
+        public static IQueryable<TSource> Take<TSource>(this IQueryable<TSource> source, Range range);
     }
 }
```

