Shad
Shad

Reputation: 1219

making unique strings after getting value from hashset?

Okay So I have this Hashset that contains 3 items and I want to apply some logic on it such that I am able to append some predefined 3 values for the each item present inside the hashset

for example,

HashSet<string> hs = new HashSet<string>(); //it could be string or some other class object
hs.add("Red");
hs.add("Yellow");
hs.add("Blue");

//Some predefined values for those strings that I want to append to them
string[] str = {Alpha, Beta, Gamma}

The output I desire is:

unique strings associating "RedAlpha", "YellowBeta", "bluegamma" 

for example s1 = "RedAlpha", s2 = "YellowBeta", s3 = "bluegamma";

I then want to apply some different logic to each of them later but then I guess that is a different thing

My Tried code

int count = 1;
int index = 0;
string s = "";
foreach(string strr in hs)
{

 string s + count = strr + str[index]; // I don't know how to make new unique string
 count++;
 index++;
}

My other Tried Code,

   foreach(string strr in hs)
{

 string s = strr + str[index]; 
 s = s + ","
 index++;
}

s.split(",");

Upvotes: 0

Views: 72

Answers (2)

CodingYoshi
CodingYoshi

Reputation: 27049

When you want to merge 2 collection together and perform some operation on them, use the Zip method. See this answer for an explanation of Zip method.

Here is how to achieve what you need:

HashSet<string> hs = new HashSet<string>();
hs.Add("Red");
hs.Add("Yellow");
hs.Add("Blue");

string[] str = { "Alpha", "Beta", "Gamma" };
List<KeyValuePair<string, string>> kvps = 
    hs.Zip(str, (left, right) => new KeyValuePair<string, string>(left, right))
    .ToList();

If you want a dictionary, it is straight forward as well:

Dictionary<string, string> kvps = 
    hs.Zip(str, (left, right) => new { left, right })
    .ToDictionary(x => x.left, x.right);

Upvotes: 1

Backs
Backs

Reputation: 24913

Put them in a list:

int index = 0;
var list = new List<string>();
foreach(string strr in hs)
{
    list.Add(strr + str[index]);
    index++;
}

Console.WriteLine(list[0]); //RedAlpha

Upvotes: 1

Related Questions