main
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4
 5namespace jive
 6{
 7  static public class EnumerableExtensions
 8  {
 9    static public IEnumerable<T> where<T>(this IEnumerable<T> items, Func<T, bool> condition_is_met)
10    {
11      return null == items ? Enumerable.Empty<T>() : items.Where(condition_is_met);
12    }
13
14    static public IList<T> databind<T>(this IEnumerable<T> items_to_bind_to)
15    {
16      return null == items_to_bind_to ? new List<T>() : items_to_bind_to.ToList();
17    }
18
19    static public IEnumerable<T> sorted_using<T>(this IEnumerable<T> items_to_sort, IComparer<T> sorting_algorithm)
20    {
21      var sorted_items = new List<T>(items_to_sort);
22      sorted_items.Sort(sorting_algorithm);
23      return sorted_items;
24    }
25
26    static public IEnumerable<T> all<T>(this IEnumerable<T> items)
27    {
28      foreach (var item in items ?? Enumerable.Empty<T>()) yield return item;
29    }
30
31    static public void each<T>(this IEnumerable<T> items, Action<T> action)
32    {
33      foreach (var item in items ?? Enumerable.Empty<T>()) action(item);
34    }
35
36    static public IEnumerable<T> join_with<T>(this IEnumerable<T> left, IEnumerable<T> right)
37    {
38      if (null == right) return left;
39
40      var list = new List<T>();
41      list.AddRange(left);
42      list.AddRange(right);
43      return list;
44    }
45  }
46}