使用LINQ将List<string[]>的前几个元素转换为string[]。

3

我有一个字符串数组列表:List<string[]> myList;

是否有方法可以获取所有元素的string [0]并形成一个字符串数组? 就像将List myList转换为string [],其中元素是myList [string [0]]

我猜大概是这样的:var result = from x in myList .Take(0) select x

第二个问题)是否有方法可以在不使用for循环的情况下将string []转换为string [1,]? 现在我这样做:

for (int i = 0; i < arr.Length; i++)
      range[0, i] = arr[i];

我需要“这个语法”,因为我要将列导出到Excel。而且我需要一个object[,]来执行range.set_Value(Type, object[,])


你尝试过什么?此外,你应该一次只问一个问题。如果你有两个不同的问题,就要分别提出两个问题。 - svick
3个回答

6
string[] result = myList.Select(arr => arr.FirstOrDefault()).ToArray();

您是在寻找这个吗?

Take(n) 只返回一个最多包含 n 个元素的可枚举对象,因此显然是错误的。


1
我认为 arr[0] 是可以的。在这里使用 FirstOrDefault() 没有任何优势。 - paul
@paul 如果没有元素,FirstOrDefault 将返回 null,而不是抛出异常。 - Grant Thomas
1
我想这取决于@Alberto是否希望它在此处崩溃,或者他的应用程序是否应该勇敢地继续处理意外为空的数据集。 - paul
@GrantThomas 当发生意外情况时,出现 BANG! 声音通常是件好事。 - svick
@svick一个没有元素的数组通常不是意外的事情,它总是相当可能的。因此,可以处理它(或者如果需要的话不处理),而不会出现异常情况。 - Grant Thomas

1
据我理解您的问题,以下内容应该足够:
string[] result = (from item in myList select item.FirstOrDefault()).ToArray());

1

对于第一部分;

var temp = myList.Select(q => q.FirstOrDefault());

对于第二部分; 我认为没有直接的Linq语句将单维数组转换为多维数组。

据我所知,这将返回一个 IQueryable<string> - Grant Thomas
@GrantThomas 为什么会这样?除非你从 IQueryable 开始或显式调用 AsQueryable(),LINQ 才会返回那个结果。 - svick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接