Enumerable
Sorts the elements of a sequence in order and by properties provided via dictionary. Could help in some difficult cases, when you need, for example, sort by name in ascending order and by age in descending. Number of fields is, of course, could be more than two.
var list = new List<FooBar>
{
new FooBar { Foo = 5, Bar = 1, Baz = 7 },
new FooBar { Foo = 2, Bar = 3, Baz = 2 },
new FooBar { Foo = 2, Bar = 2, Baz = 3 },
new FooBar { Foo = 6, Bar = 3, Baz = 2 },
new FooBar { Foo = 6, Bar = 3, Baz = 1 },
new FooBar { Foo = 2, Bar = 4, Baz = 4 }
};
var result = list.OrderBy(new Dictionary<string, Order>
{
{ "Foo", Order.Asc },
{ "Bar", Order.Desc },
{ "Baz", Order.Asc }
});
// results in:
// {
// new FooBar { Foo = 2, Bar = 4, Baz = 4 },
// new FooBar { Foo = 2, Bar = 3, Baz = 2 },
// new FooBar { Foo = 2, Bar = 2, Baz = 3 },
// new FooBar { Foo = 5, Bar = 1, Baz = 7 },
// new FooBar { Foo = 6, Bar = 3, Baz = 1 },
// new FooBar { Foo = 6, Bar = 3, Baz = 2 }
// };
There are count of more special sorting methods which are not listed here but could be found via IntelliSense.
Gets a random element from provided collection.
var list = new int[] {1, 2, 3};
var result = list.PickRandom(); // 1 or 2 or 3
or randomly gets
count
items from source
:var result = list.PickRandom(2); // 1,2 or 1,3 or 2,3
There are count of more special sorting methods which are not listed here but could be found via IntelliSense.
Shuffles source collection changing its elements positions at random.
var list = new int[] {1, 2, 3};
var result = list.Shuffle();
Performs simple foreach-like iteration on source collection while invoking provided method for each element of the collection.
var list = new List<FooBar>
{
new FooBar { Foo = 1 },
new FooBar { Foo = 2 },
new FooBar { Foo = 3 },
new FooBar { Foo = 4 }
};
list.ForEach(x => x.Foo = x.Foo + 5);
// results in:
// new FooBar { Foo = 6 },
// new FooBar { Foo = 7 },
// new FooBar { Foo = 8 },
// new FooBar { Foo = 9 }
Performs simple foreach-like iteration on source collection while invoking provided function for every element of the collection. Breaks iteration when first
true
result got from function.var list = new List<FooBar>
{
new FooBar { Foo = 1 },
new FooBar { Foo = 2 },
new FooBar { Foo = 3 },
new FooBar { Foo = 4 }
};
list.ForEachOrBreak(x =>
{
if (x.Foo >= 3)
{
return true;
}
x.Foo = x.Foo + 5;
return false;
});
// results in:
// new FooBar { Foo = 6 },
// new FooBar { Foo = 7 }, <--- last processed item
// new FooBar { Foo = 3 },
// new FooBar { Foo = 4 }
Last modified 1yr ago