wasSharp – Diff between revs 43 and 46
?pathlinks?
Rev 43 | Rev 46 | |||
---|---|---|---|---|
Line 34... | Line 34... | |||
34 | params Predicate<T>[] @case) |
34 | params Predicate<T>[] @case) |
|
35 | { |
35 | { |
|
36 | if (@case.Length % 2 != 0) |
36 | if (@case.Length % 2 != 0) |
|
37 | throw new ArgumentException("Pairs of predicates expected."); |
37 | throw new ArgumentException("Pairs of predicates expected."); |
|
Line -... | Line 38... | |||
- | 38 | |
||
38 | |
39 | var enumerable = query as IList<T> ?? query.ToList(); |
|
39 | try |
40 | using (var iter = enumerable.GetEnumerator()) |
|
40 | { |
- | ||
41 | var enumerable = query as IList<T> ?? query.ToList(); |
41 | { |
|
42 | using (var iter = enumerable.GetEnumerator()) |
42 | while (iter.MoveNext()) |
|
43 | { |
43 | { |
|
- | 44 | var match = false; |
||
44 | while (iter.MoveNext()) |
45 | for (var i = 0; i < @case.Length; i += 2) |
|
45 | { |
46 | { |
|
46 | for (var i = 0; i < @case.Length; i += 2) |
47 | if (!@case[i].Invoke(iter.Current)) |
|
- | 48 | continue; |
||
47 | { |
49 | |
|
48 | if (@case[i].Invoke(iter.Current) && @case[i + 1].Invoke(iter.Current)) |
50 | if (@case[i + 1].Invoke(iter.Current)) |
|
- | 51 | return; |
||
49 | throw new Exception(); |
52 | |
|
50 | } |
53 | match = true; |
|
- | 54 | } |
||
- | 55 | |
||
- | 56 | if (!match) |
||
51 | } |
57 | @default.Invoke(iter.Current); |
|
52 | } |
- | ||
53 | @default.Invoke(enumerable.Last()); |
- | ||
54 | } |
- | ||
55 | catch |
- | ||
56 | { |
58 | } |
|
57 | } |
59 | } |
|
Line 58... | Line 60... | |||
58 | } |
60 | } |
|
59 | |
61 | |