As I mentioned in my comment, I think what you want is either a permutation (where you reorder an ordered set) or a combination (where you get unordered subsets of an unordered set)
A general purpose library for doing all those things in C# can be found here:
http://www.codeproject.com/KB/recipes/Combinatorics.aspx
It's still not 100% clear to me what you want. Here are some options:
Let S be the set {A, B, C}
The Cartesian product S x S is AA, AB, AC, BA, BB, BC, CA, CB, CC. That is every possible combination of two elements, order matters, including duplicates.
"S permute 2" is AB, AC, BA, BC, CA, CB. That is, every possible combination of two elements, order matters, but no duplicates.
"S choose 2" is AB, AC, BC. That is, every possible combination of two elements, no order, no duplicates.
"Power set of S" is nothing, A, B, C, AB, AC, BC, ABC. That is, every possible combination of zero, one, two or three elements, no order.
You can generate a power set (if that's what you want to do) by counting in binary. Consider the numbers 0 through 7 in binary:
ABC
000 0 nothing
001 1 C
010 2 B
011 3 BC
100 4 A
101 5 AC
110 6 AB
111 7 ABC
So if you can count, you can generate the power set.
What is it you want, exactly?