You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,47 @@
|
||||
namespace System.Web.UI.WebControls {
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
internal class LinqDataSourceHelper {
|
||||
|
||||
public static bool EnumerableContentEquals(IEnumerable enumerableA, IEnumerable enumerableB) {
|
||||
IEnumerator enumeratorA = enumerableA.GetEnumerator();
|
||||
IEnumerator enumeratorB = enumerableB.GetEnumerator();
|
||||
while (enumeratorA.MoveNext()) {
|
||||
if (!enumeratorB.MoveNext())
|
||||
return false;
|
||||
object itemA = enumeratorA.Current;
|
||||
object itemB = enumeratorB.Current;
|
||||
if (itemA == null) {
|
||||
if (itemB != null)
|
||||
return false;
|
||||
}
|
||||
else if (!itemA.Equals(itemB))
|
||||
return false;
|
||||
}
|
||||
if (enumeratorB.MoveNext())
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public static Type FindGenericEnumerableType(Type type) {
|
||||
// Logic taken from Queryable.AsQueryable which accounts for Array types which are not
|
||||
// generic but implement the generic IEnumerable interface.
|
||||
while ((type != null) && (type != typeof(object)) && (type != typeof(string))) {
|
||||
if (type.IsGenericType && (type.GetGenericTypeDefinition() == typeof(IEnumerable<>))) {
|
||||
return type;
|
||||
}
|
||||
foreach (Type interfaceType in type.GetInterfaces()) {
|
||||
Type genericInterface = FindGenericEnumerableType(interfaceType);
|
||||
if (genericInterface != null) {
|
||||
return genericInterface;
|
||||
}
|
||||
}
|
||||
type = type.BaseType;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user