将字符串列表连接成单个字符串

时间:2014-03-14 05:19:05

标签: c# json string concatenation

我试图将字符串列表连接成一个用逗号分隔的单个字符串。使用string.Join非常简单,我面临的问题是我如何使用属性来做到这一点?

public class JsonObject
{
    public string EntityID { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string Address3 { get; set; }
    public string Address3 { get; set; }

    public List<string> Category = ??
}

我正在尝试获取一个json对象并将其插入到数据库中。 Category是一个我可以使用List<string>处理的数组。如何将此字符串列表连接成一个字符串,然后将其返回到字符串类别?我假设你必须使用一个单独的类来处理它,但除此之外我不知道怎么回事。

Json对象如下所示:

"EntityID":"foo",
"Categories": [ "Category1", "Category2", "Category3"] 

我希望将这些类别(1,2,3)连接成单个字符串,即

public string Category;

4 个答案:

答案 0 :(得分:5)

如果您需要一个以分隔符分隔的字符串,那么:

public List<string> Categories { get; set; }

public string Category
{
    get
    {
        return String.Join(",", Categories);
    }
}

如果只是连接,即用空字符串连接:

public string Category
{
    get
    {
        return String.Concat(Categories);
    }
}

答案 1 :(得分:0)

public static string Concat(this IEnumerable<string> yourString) {
    StringBuilder category= new StringBuilder();
    foreach(string s in yourString) {
        category.Append(s);
    }
    return category.ToString();
}

如果您使用的是.net 4.0

  String.Join(String.Empty, yourString.ToArray());

答案 2 :(得分:0)

首先,我建议不要列出包含非常相似信息的变量列表,而应将它们分组到一个容器中。

public string[] Addresses { get; protected set; }

确保将数组初始化为构造函数中所需的大小。另外,如果这确实应该是动态的,请考虑List。

如果你想要一个特殊的助手来加入你的字符串,那么就把问题抽象出来。基本上,您希望迭代一组字符串。

protected IEnumerable<string> GetStringData()
{
  yield return EntityID;
  foreach (var address in Addresses)
    yield return address;
}

然后使用string.Join

将字符串连接在一起
string commaDelim = string.Join(",", GetStringData())

编辑如果您想使用问题中所述的Category媒体资源:

public string Category { get { return string.Join(",", GetStringData()); } }

答案 3 :(得分:0)

我希望我能正确理解你的问题,因为你希望知道如何通过类属性进行连接。

如果是,那么这是我建议的解决方案:

public class JsonObject
    {
        public string CompiledString { get; set; }

        private string _Category;
        public string Category 
        { 
            get
            { 
                return _Category; 
            }
            set
            {
                _Category = value;
                CompileString();
            }
        }

        private string _EntityID;
        public string EntityID
        {
            get
            {
                return _EntityID;
            }
            set
            {
                _EntityID = value;
                CompileString();
            }
        }
        //Rest of the properties go here

        private void CompileString()
        {
            //cycle through each of your properties and update the CompiledString variable
            CompiledString =
                _Category == null ? string.Empty : _Category + "," +
                _EntityID == null ? string.Empty : _EntityID + ",";
            //I left the last comma in there because you will be adding other props... just remember to exclude it from the last one.

            //Of course this part of the implementation is entirely up to you, your question was about how to do it through the property
        }
    }

您的类中有一个包含连接值的公共字段或属性,然后在您的属性设置器中调用类中的私有方法,为您进行连接。