wasSharp
/Linq.cs |
@@ -38,7 +38,8 @@ |
|
try |
{ |
using (var iter = query.GetEnumerator()) |
var enumerable = query as IList<T> ?? query.ToList(); |
using (var iter = enumerable.GetEnumerator()) |
{ |
while (iter.MoveNext()) |
{ |
@@ -49,7 +50,7 @@ |
} |
} |
} |
@default.Invoke(query.Last()); |
@default.Invoke(enumerable.Last()); |
} |
catch |
{ |
@@ -270,10 +271,10 @@ |
var r = new List<T>(p); |
return l.Count > r.Count |
? l.Zip(r, (x, y) => x.Equals(y) ? default(T) : y) |
.Concat(l.Skip(r.Count())) |
.Concat(l.Skip(r.Count)) |
.Where(q => q != null && !q.Equals(default(T))) |
: r.Zip(l, (x, y) => x.Equals(y) ? default(T) : y) |
.Concat(r.Skip(l.Count())) |
.Concat(r.Skip(l.Count)) |
.Where(q => q != null && !q.Equals(default(T))); |
} |
|
@@ -286,13 +287,17 @@ |
/// <returns>the first sequence excluding the second sequence</returns> |
public static IEnumerable<T> SequenceExcept<T>(this IEnumerable<T> a, IEnumerable<T> b) where T : IEquatable<T> |
{ |
var ea = a.GetEnumerator(); |
var eb = b.GetEnumerator(); |
while (ea.MoveNext()) |
using (var ea = a.GetEnumerator()) |
{ |
if (eb.MoveNext() && ea.Current.Equals(eb.Current)) |
continue; |
yield return ea.Current; |
using (var eb = b.GetEnumerator()) |
{ |
while (ea.MoveNext()) |
{ |
if (eb.MoveNext() && ea.Current.Equals(eb.Current)) |
continue; |
yield return ea.Current; |
} |
} |
} |
} |
} |