我试图将字符串列表连接成一个用逗号分隔的单个字符串。使用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;
答案 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
}
}
您的类中有一个包含连接值的公共字段或属性,然后在您的属性设置器中调用类中的私有方法,为您进行连接。