我知道这是一个愚蠢的问题,但有没有人有一个优雅的(或非优雅的)LINQ方法将2D数组(对象[,])转换为由一个数组构成的一维数组(object []) 2D阵列的第一维?
示例:
// I'd like to have the following array
object[,] dim2 = {{1,1},{2,2},{3,3}};
// converted into this kind of an array... :)
object[] dim1 = { 1, 2, 3 };
答案 0 :(得分:6)
您声称自己需要a 1D array (object[]) comprised of the first dimension of the 2D array
,所以我假设您正在尝试选择原始2D数组的子集。
int[,] foo = new int[2, 3]
{
{1,2,3},
{4,5,6}
};
int[] first = Enumerable.Range(0, foo.GetLength(0))
.Select(i => foo[i, 0])
.ToArray();
// first == {1, 4}
答案 1 :(得分:0)
object[,] dim2 =
{{"ADP", "Australia"}, {"CDN", "Canada"}, {"USD", "United States"}};
object[] dim1 = dim2.Cast<object>().ToArray();
// dim1 = {"ADP", "CDN", "USD"}
此代码编译并返回预期结果。我很高兴.Cast(),我只需要第一个维度,而不是第二个维度。
答案 2 :(得分:0)
通常,对于集合集合(而不是数组数组),您可以执行以下操作:
mainCollection.Select(subCollection => subCollection.First());