将LINQ结果转换为2D字符串数组

时间:2013-07-23 18:16:06

标签: c# .net linq

我有一个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();

2 个答案:

答案 0 :(得分:4)

请注意,string[][]不是多维数组,而是数组数组。多维数组看起来像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();

答案 1 :(得分:3)

种类:

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