C#HashSet <string> </string>的全部内容

时间:2011-07-18 00:34:57

标签: c#

我有一个HashSet<string>定期添加。我想要做的是将整个HashSet转换为字符串而不进行foreach循环。有没有人有例子?

4 个答案:

答案 0 :(得分:37)

无论是否明确地写一个内容,你都会遍历内容。

但是,如果没有明确的写作,并且如果通过“cast”你的意思是“连接”,你会写这样的东西

string output = string.Join("", yourSet); // .NET 4.0
string output = string.Join("", yourSet.ToArray()); // .NET 3.5

答案 1 :(得分:4)

如果你想要一个单独的字符串,它是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();
    }
}

答案 2 :(得分:2)

如果你想要一个方法来连接所有hashset的项目,你可以创建一个扩展方法。

[]的

[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();
        }
    }
} 

答案 3 :(得分:1)

您可以使用Linq:

hashSet.Aggregate((a,b)=>a+" "+b)

在hashset的两个元素之间插入一个空格