by Oliver
24. June 2011 21:47
Imagine we have the following list of ids of some kind of objects and a mapping of some of the ids to some values (also int’s here):
1: var ids = new List<int> { 6, 2, 5, 3, 7 };
2: var valueMap = new List<int[]> { new[] { 5, 15 }, new[] { 2, 12 }, new[] { 3, 13 } };
Now, if we want to return the results a.k.a. the valueMap in the same order we have the ids, we can use the LINQ extension method .Join()like this:
1: var joined = ids.Join(valueMap, id => id, arr => arr[0], (id, arr) => string.Format("id: {0} - value: {1}", id, arr[1]));
Really convenient! Let’s look at the output:
1: Console.WriteLine(string.Join("\r\n", joined));
2:
3: // Prints:
4: // id: 2 - value: 12
5: // id: 5 - value: 15
6: // id: 3 - value: 13
By the way, I use FastSharp to write and test this kind of small code snippets
Happy Coding,
Oliver