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

3

我有一个名为“用户”的类,其中包含一组字符串的组列表(Group A,Group B,Group C)

public class User
    {

        public string FirstName { get; set; }
        public string LastName { get; set; }

        public User()
        {
            Groups = new List<string>();
        }

    }

我现在正在使用JSON反序列化器来创建用户和组列表。然而,我希望能够获取每个用户的以下格式的组字符串:

"Group A", "Group B", "Group C"

我尝试过以下方法:

string[] AllGroups;
AllGroups = (string[])usrList[0].Groups.ToArray();
return string.Join(",", AllGroups);

然而,它以以下格式(不带引号)向我提供列表:

组A,组B,组C

您有什么想法,我在这里做错了什么吗?

2个回答

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
假设您希望在没有值时得到“”作为结果,您可以这样做:
 return "\"" + string.Join("\", \"", AllGroups) + "\"";

请注意,这不是一个空字符串 - 它是一个包含两个引号的字符串。
如果您想使用此代码返回 null 或空字符串,则需要先检查 AllGroups 的大小。
var AllGroups = usrList[0].Groups;
if (AllGroups.Count() == 0) return null;
else return "\"" + string.Join("\", \"", AllGroups) + "\"";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接