从列表中创建逗号分隔引号的字符串

时间:2013-01-02 20:04:39

标签: c# list

我有一个名为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组

知道我在这里做错了吗?

2 个答案:

答案 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) + "\"";