У меня есть HashSet<string>
, который добавляется к периодически. Я хочу сделать все HashSet для строки без выполнения цикла foreach. Есть ли у кого-нибудь пример?
С# HashSet <string> в одну строку
Ответ 1
Вы будете контактировать содержимое, независимо от того, явно ли вы его пишете или нет.
Однако, чтобы сделать это без явного письма, а если "cast" вы подразумеваете "concatenate", вы должны написать что-то вроде этого
string output = string.Join("", yourSet); // .NET 4.0
string output = string.Join("", yourSet.ToArray()); // .NET 3.5
Ответ 2
Если вы хотите, чтобы одна строка была конкатенацией значений в HashSet, это должно работать...
class Program
{
static void Main(string[] args)
{
var set = new HashSet<string>();
set.Add("one");
set.Add("two");
set.Add("three");
var count = string.Join(", ", set);
Console.WriteLine(count);
Console.ReadKey();
}
}
Ответ 3
Если вы хотите, чтобы один метод получал все элементы hashset, конкатенированные, вы можете создать метод расширения.
[] 's
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
HashSet<string> hashset = new HashSet<string>();
hashset.Add("AAA");
hashset.Add("BBB");
hashset.Add("CCC");
Assert.AreEqual<string>("AAABBBCCC", hashset.AllToString());
}
}
public static class HashSetExtensions
{
public static string AllToString(this HashSet<string> hashset)
{
lock (hashset)
{
StringBuilder sb = new StringBuilder();
foreach (var item in hashset)
sb.Append(item);
return sb.ToString();
}
}
}
Ответ 4
Вы можете использовать Linq:
hashSet.Aggregate((a,b)=>a+" "+b)
который вставляет пробел между двумя элементами вашего хэшета