1

数値 ID のコンマ区切りリストである文字列プロパティを持つオブジェクトのリストがあります。

コンマ区切りの値を抽出して int 配列を取得する最も効率的な方法は何ですか?

現在、私の解決策は次のとおりです。

var allCsvs = objects
    .Select(o => o.IdCsv); // the IdCsv is a string property, ie "1,2,3,4,5"
var allIds = string.Join(",", allCsvs);
var idArray = allIds.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
    .Select(id => Convert.ToInt32(id));

ここでパフォーマンスを向上させる方法についてのアイデアはありますか?

アップデート:

オブジェクトは次のようになります。

class MyClass {
    public string IdCsv { get; set; }
}

そして、このクラスのインスタンスは、その文字列プロパティIdCsvが次のように設定されている場合があります。"1,2,3,4,5"

4

1 に答える 1

1

これを試して:

internal class Csv
{
    public string CommaSepList { get; set; }
}


var allCsvs =
    new List<Csv>
        {
            new Csv
                {
                    CommaSepList = "1,2,3,4,,5"
                },
            new Csv
                {
                    CommaSepList = "4,5,7,,5,,"
                },
        };

int[] intArray =
    allCsvs
        .SelectMany(c => c.CommaSepList.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
        .Select(int.Parse)
        .ToArray();

または

int[] intArray =
    allCsvs
        .SelectMany(c => c.CommaSepList.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse))
        .ToArray();
于 2013-01-23T10:24:43.730 に答える