C# 将LINQ结果转换为二维字符串数组
我有一个LINQ查询,它选择TeamID和团队名称的列表来填充下拉列表。查询如下所示: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
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[,]
)是一个令人憎恶的东西:访问速度较慢,很难编写通用的方法来操作(至少对于任意的维度),以及在各种一次性的神秘规则下。