diff options
author | Roei Erez <roeie@mono-cvs.ximian.com> | 2008-05-20 14:27:34 +0400 |
---|---|---|
committer | Roei Erez <roeie@mono-cvs.ximian.com> | 2008-05-20 14:27:34 +0400 |
commit | 5ee77009f94b21a96dbae616b2f1ffe17fcb8e29 (patch) | |
tree | b30fc6c7438a55b0e1e738d6ec28534bbd49336e /mcs/class/System.Core/System.Linq/Queryable.cs | |
parent | c8a7bf2a5f5e5e02120a6ccc6fe201077b9eb958 (diff) |
Add implementation for the non-generic Queryable.AsQueryable method, and some test cases.
svn path=/trunk/mcs/; revision=103562
Diffstat (limited to 'mcs/class/System.Core/System.Linq/Queryable.cs')
-rw-r--r-- | mcs/class/System.Core/System.Linq/Queryable.cs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/mcs/class/System.Core/System.Linq/Queryable.cs b/mcs/class/System.Core/System.Linq/Queryable.cs index ff63ea18658..65280120dad 100644 --- a/mcs/class/System.Core/System.Linq/Queryable.cs +++ b/mcs/class/System.Core/System.Linq/Queryable.cs @@ -139,6 +139,9 @@ namespace System.Linq { public static IQueryable<TElement> AsQueryable<TElement> (this IEnumerable<TElement> source) { + if (source == null) + throw new ArgumentNullException ("source"); + var queryable = source as IQueryable<TElement>; if (queryable != null) return queryable; @@ -149,11 +152,20 @@ namespace System.Linq { [MonoTODO] public static IQueryable AsQueryable (this IEnumerable source) { + if (source == null) + throw new ArgumentNullException ("source"); + var queryable = source as IQueryable; if (queryable != null) return queryable; - throw new NotImplementedException (); + Type sourceType = source.GetType (); + if (!sourceType.IsGenericImplementationOf (typeof (IEnumerable<>))) + throw new ArgumentException ("source is not IEnumerable<>"); + + Type sourceArgType = sourceType.GetFirstGenericArgument (); + return (IQueryable) Activator.CreateInstance (typeof (QueryableEnumerable<>) + .MakeGenericType (sourceArgType), source); } #endregion |