Code Bucket …

list extensions

You can visit http://www.the-barn.org/codebucket.php?id=72 to view this snippet directly.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using System;
using System.Collections.Generic;

namespace Incah.Core
{
	public static class ListExtensions
	{
		public static IEnumerable<T> Reversed<T>(this List<T> list)
		{
			for (int index = list.Count - 1; index >= 0; --index)
				yield return list[index];
		}

		public static T GetNormalized<T>(this List<T> list, int index)
		{
			return (index %= list.Count) < 0
				? list[list.Count + index]
				: list[index];
		}

		public static T GetNextItem<T>(this List<T> list, T item)
		{
			int index = list.IndexOf(item) + 1;
			return list.GetNormalized(index);
		}

		public static T GetPreviousItem<T>(this List<T> list, T item)
		{
			int index = Math.Max(0, list.IndexOf(item)) - 1;
			return list.GetNormalized(index);
		}

		public static IEnumerable<F> Find<F, T>(this List<T> list)
		{
			foreach (object value in list)
			{
				if (value is F)
					yield return (F)value;
			}
		}

		public static IEnumerable<F> Find<F, T>(this List<T> list, Predicate<F> predicate)
		{
			foreach (F value in list.Find<F, T>())
			{
				if (predicate(value))
					yield return value;
			}
		}

		public static IEnumerable<F> Find<F, T>(this List<T> list, Func<F, bool> predicate)
		{
			foreach (F value in list.Find<F, T>())
			{
				if (predicate(value))
					yield return value;
			}
		}
	}
}
  • Posted on 09.02.2010 at 11:12 PM by stoffle
  • Language: C#

Snippets

 
36 Results
Page 1 of 3
TitleLanguagePosted ByPostedExpiresActions
Python first-class classes for KodenPythonstoffle04.07.2010 8:19 AM (64 days 3h 28m ago)-view
mLAN Activation ScriptPlain Textstoffle23.06.2010 6:42 AM (75 days 5h 4m ago)-view
areaC#stoffle27.02.2010 3:51 AM (191 days 8h 55m ago)-view
list extensionsC#stoffle09.02.2010 11:12 PM (208 days 13h 34m ago)-view
possible IComponent intererface version 95C#stoffle09.02.2010 11:04 PM (208 days 13h 43m ago)-view
Render SystemC++spam05.06.2009 12:14 PM (457 days 23h 32m ago)-view
Effect SampleC++spam03.06.2009 2:40 PM (459 days 21h 6m ago)-view
Rho LambdasC++spam03.06.2009 2:38 PM (459 days 21h 9m ago)-view
Example VSM implC++spam02.06.2009 1:21 PM (460 days 22h 25m ago)-view
Vector3 Interface (public)C++kalin11.02.2008 9:53 PM (937 days 14h 53m ago)-view
TimesTablesC++kalin09.02.2008 6:04 PM (939 days 18h 42m ago)-view
Skruje Account Search PagePHPstoffle03.02.2008 5:12 PM (945 days 19h 34m ago)-view
C++ is still bork...C++spam26.01.2008 5:58 PM (953 days 18h 48m ago)-view
C++ is bork #3C++spam26.01.2008 5:47 PM (953 days 19h ago)-view
C++ is bork #2C++spam26.01.2008 5:46 PM (953 days 19h ago)-view
36 Results
Page 1 of 3