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