Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将LINQ结果转换为二维字符串数组_C#_.net_Linq - Fatal编程技术网

C# 将LINQ结果转换为二维字符串数组

C# 将LINQ结果转换为二维字符串数组,c#,.net,linq,C#,.net,Linq,我有一个LINQ查询,它选择TeamID和团队名称的列表来填充下拉列表。查询如下所示: var teams = db.Teams.Where(t => t.isActive) .Select(t => new {t.TeamID, t.TeamName}); 但是,我希望结果集采用2D字符串数组的形式,因为这是填充DDL的函数所需要的。我知道我可以使用for循环来构建数组,但是如果可能的话,我更喜欢它,一步完成所有工作 有类似的东西吗 str

我有一个LINQ查询,它选择TeamID和团队名称的列表来填充下拉列表。查询如下所示:

var teams = db.Teams.Where(t => t.isActive)
                    .Select(t => new {t.TeamID, t.TeamName});
但是,我希望结果集采用2D字符串数组的形式,因为这是填充DDL的函数所需要的。我知道我可以使用for循环来构建数组,但是如果可能的话,我更喜欢它,一步完成所有工作

有类似的东西吗

string[][] teams = db.Teams.Where(t => t.isActive)
                           .Select(t => new {t.TeamID, t.TeamName})
                           .To2DArray();
种类:

string[][] teams = db.Teams.Where(t => t.isActive).Select(t => new[] {t.TeamID, t.TeamName}).ToArray();

请注意,
string[][]
不是多维数组,而是数组的数组。多维数组看起来像
字符串[,]
,具有不同的语义(即数组数组的数组可能具有不同长度的子数组,但多维数组中的所有行/列具有相同的长度)

由于您只是处理数组的数组,最简单的解决方案可能是在使用ToArray创建的项目序列上使用ToArray

以下代码假定db.Teams也是一个数组数组:

var teams =
    db.Teams
    .Select(teamArray =>
        teamArray
        .Where(t => t.isActive)
        .Select(t => new {t.TeamID, t.TeamName})
        .ToArray())
    .ToArray();

您混淆了匿名对象语法,
new{a,b,c=c}
和数组初始值设定项语法
new[]{a,b,c}
。其他方向。问题是生成一个匿名类型,但我认为您将其理解为生成一个数组。@Strilan噢,这是我的解决方案!我知道你已经知道这一点,在.NET中真正的“多维”数组(
string[,]
)是一个令人憎恶的东西:访问速度较慢,很难编写通用的方法来操作(至少对于任意的维度),以及在各种一次性的神秘规则下。