我有一个名为user的类,其中包含一组字符串组(A组,B组,C组)
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public User()
{
Groups = new List<string>();
}
}
然后我使用json反序列化器来创建用户和组列表。但是,我希望能够为每个用户获取具有此格式的字符串:
“A组”,“B组”,“C组”
我试过这个:
string[] AllGroups;
AllGroups = (string[])usrList[0].Groups.ToArray();
return string.Join(",", AllGroups);
然而它给我一个这种格式的列表(没有引号):
A组,B组,C组
知道我在这里做错了吗?
答案 0 :(得分:12)
知道我在这里做错了吗?
嗯,你没有在任何地方添加引号 - 所以你没有得到它们。
您可以自己轻松地用引号括住每个项目:
return string.Join(", ", usrList[0].Groups.Select(x => "\"" + x + "\""));
假设您正在使用.NET 4或更高版本 - 如果您使用的是.NET 3.5(没有那么好的string.Join
支持),您需要创建一个数组,但是你不要需要将其强制转换为string[]
(因为ToArray
已经返回一个数组)...
return string.Join(", ", usrList[0].Groups
.Select(x => "\"" + x + "\"")
.ToArray());
我在逗号分隔符之后添加了一个空格,考虑到你的问题 - 我怀疑你当前的代码是真的给你Group A,Group B,Group C
。
答案 1 :(得分:1)
假设您希望在没有值时获得""
,则可以执行以下操作:
return "\"" + string.Join("\", \"", AllGroups) + "\"";
请注意,这是不一个空字符串 - 它是一个包含两个引号的字符串。
如果要使用此代码返回null或空字符串,则需要先检查AllGroups
的大小。
var AllGroups = usrList[0].Groups;
if (AllGroups.Count() == 0) return null;
else return "\"" + string.Join("\", \"", AllGroups) + "\"";