C# 如何转换EnumerablerRowCollection<;字符串[]>;到常规字符串数组?

C# 如何转换EnumerablerRowCollection<;字符串[]>;到常规字符串数组?,c#,arrays,string,linq,C#,Arrays,String,Linq,如何将EnumerablerRowCollection转换为常规字符串数组 这是我的密码 var trackerCodes = from a in excelData.AsEnumerable() select new[] { a[TrackerCodeColumnIndex].ToString() }; var resizeInfo = from a in excelData.AsEnumerable() select new[] { a[ResizeInfoColumnIndex].ToS

如何将EnumerablerRowCollection转换为常规字符串数组

这是我的密码

var trackerCodes = from a in excelData.AsEnumerable() select new[] { a[TrackerCodeColumnIndex].ToString() };

var resizeInfo = from a in excelData.AsEnumerable() select new[] { a[ResizeInfoColumnIndex].ToString() };
我想将这两个EnumerablerRowCollections转换为常规字符串数组


提前感谢。

在将这两种方法放入可枚举项后,您可以使用SelectMany Linq方法。例如:

var superArray = (new[] {trackerCodes, resizeInfo}).SelectMany(x => x);

List trackerCodes=excelData.AsEnumerable()

。选择(r=>r.Field,除非您需要返回
IEnumerable
,否则只需返回
IEnumerable

然后,您可以通过以下方式将每个转换为一个数组:

var trackerCodesArray = trackerCodes.ToArray();
var resizeInfoArray = resizeInfo.ToArray();
当然,如果只需要数组,可以将它们组合成一个表达式:

var trackerCodes = (from a in excelData.AsEnumerable() select a[TrackerCodeColumnIndex].ToString()).ToArray();
var resizeInfo = (from a in excelData.AsEnumerable() select a[ResizeInfoColumnIndex].ToString()).ToArray();
尽管在这一点上,我会尝试使用lambda/fluent查询语法:

var trackerCodes = excelData.AsEnumerable().Select(a => a[TrackerCodeColumnIndex].ToString()).ToArray();
var resizeInfo = excelData.AsEnumerable().Select(a => a[ResizeInfoColumnIndex].ToString()).ToArray();
当然,
.Field(index)
通常是首选,而不是
[index].ToString()


而且,如果您不特别需要数组,那么使用
ToList
比使用
ToArray

要好,谢谢,但我不想将它们组合在一起。我的最终目标是制作一个字典,其中键是trackerCodes中的相应值,值是resizeInfo中的相应值。它们的大小都相同。为什么不使用只需“选择一个[TrackerCodeColumnIndex].ToString()”即可获得IEnumerable,然后可以使用.ToArray()方法。我认为问题在于“新建[]{…}”,因为您正在为Excel数据中的a中的每个字符串值var trackerCodes=创建一个字符串值数组。AsEnumerable()选择字符串a[TrackerCodeColumnIndex].ToString();这也不是编译。很抱歉,我以前从未使用过这种结构。正如我在评论中提到的,它是“选择一个[TrackerCodeColumnIndex].ToString()”而没有“字符串”,您正在添加字符串为什么
select
have
new[]
我从另一个线程复制了这段代码。通过将其更改为字符串,代码将无法编译。不过,我已经找到了一个解决方案,但如果您能向我展示您正在使用的代码,那就太好了解释?非常感谢!搞定了。
var trackerCodes = excelData.AsEnumerable().Select(a => a[TrackerCodeColumnIndex].ToString()).ToArray();
var resizeInfo = excelData.AsEnumerable().Select(a => a[ResizeInfoColumnIndex].ToString()).ToArray();