3

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

知道我在这里做错了什么吗?

4

2 回答 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.

于 2013-01-02T20:06:31.533 回答
1

假设您想在""没有值时得到结果,您可以这样做:

 return "\"" + string.Join("\", \"", AllGroups) + "\"";

请注意,这不是一个空字符串 - 它是一个包含两个引号的字符串。

如果要使用此代码返回 null 或空字符串,则需要先检查大小AllGroups

var AllGroups = usrList[0].Groups;
if (AllGroups.Count() == 0) return null;
else return "\"" + string.Join("\", \"", AllGroups) + "\"";
于 2013-01-02T20:26:01.040 回答