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[](asToArray既に配列を返します)...

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

これは空の文字列ではなく、2 つの引用符を含む文字列であることに注意してください。

このコードを使用して null または空の文字列を返したい場合は、AllGroups最初のサイズを確認する必要があります。

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