Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoei Erez <roeie@mono-cvs.ximian.com>2008-05-20 14:27:34 +0400
committerRoei Erez <roeie@mono-cvs.ximian.com>2008-05-20 14:27:34 +0400
commit5ee77009f94b21a96dbae616b2f1ffe17fcb8e29 (patch)
treeb30fc6c7438a55b0e1e738d6ec28534bbd49336e /mcs/class/System.Core/System.Linq/Queryable.cs
parentc8a7bf2a5f5e5e02120a6ccc6fe201077b9eb958 (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.cs14
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