1

コンマ区切りの文字列を作成したい C# リストがあります。これに対処するSOに関する他の回答を見つけましたが、私の特定のケースでは、リスト内の値の一部のみを使用して文字列を作成したいと考えています。

リストにこれらの値が含まれている場合:

「フー」「バー」「カー」

そして、文字列を作成したかった

Foo, Bar and Car.

このコードを使用できます:

string.Format("{0} and {1}.", 
              string.Join(", ", myList.Take(myList.Count - 1)), 
              myList.Last());

ただし、私のリストは実際には次のようなjSON値で形成されています

{ Name = "Foo" }
{ Name = "Bar" }
{ Name = "Car" }

したがって、上記のコードは次のようになります。

{ Name = "Foo" }, { Name = "Bar" } and { Name = "Car" }.

Fooリスト内BarCar値のみを使用するように文字列を作成するにはどうすればよいですか?

アップデート

@StevePyのおかげで、これは私が最終的に得たものです:

string.Format("{0} and {1}.", 
              string.Join(", ", myList.Select(x => x.Name).ToList().Take(myList.Count - 1)), 
              myList.Select(x => x.Name).ToList().Last());
4

5 に答える 5

2

文字列を操作する必要がある場合は、たとえばString.IndexOfおよびString.LastIndexOfメソッドを使用して、各文字列の必要な部分を取得するだけです。

List<string> myList = new List<string> { 
    "{ Name = \"Foo\" }",
    "{ Name = \"Bar\" }",
    "{ Name = \"Car\" }"
};

var temp = myList.Select(x =>
    {
        int index = x.IndexOf("\"") + 1;
        return x.Substring(index, x.LastIndexOf("\"") - index);
    })
    .ToList();

string result = string.Format("{0} and {1}.",
                              string.Join(", ", temp.Take(myList.Count - 1)),
                              temp.Last());
于 2012-12-20T06:21:24.503 に答える
1

Linq が役立つはずです。

var nameList = myList.Select(x=>x.Name).ToList();
于 2012-12-20T06:12:05.830 に答える
0

私はあなたのためにこれを行うメソッドを構築しました:

static string ConvertToMyStyle(List<string> input)
{
    string result = "";

    foreach(string item in input)
    {
        if(input.IndexOf(item) != input.ToArray().Length-1)
            result += item + ", ";
        else
            result += "and " + item + ".";
    }
    return result;
}
于 2012-12-20T08:36:35.750 に答える
0

リスト項目の値を取得するために使用できますJsonConvert.toString。または、json シリアル化を使用した場合は、JsonConvert.Deserialization を使用できます。

于 2012-12-20T06:14:58.220 に答える