有一个方法返回 2D 数组,该方法从 LINQ 查询查询字典并尝试在 2D 数组中存储键和值。
但我无法做到这一点
public string[][] GetRecordFields(string selectedRecord)
{
var recordFields = (from record in _recordMasterList
where record.Item1 == selectedRecord
select new
{
record.Item2.Keys,
record.Item2.Values
}).ToArray();
return recordFields;
}
Run Code Online (Sandbox Code Playgroud)
但是失败了,有什么办法吗?
编辑:类型_recordMasterList
List<Tuple<string, Dictionary<string, string>>> _recordMasterList;
Run Code Online (Sandbox Code Playgroud)
在查询中创建一个字符串数组而不是一个对象,然后将ToArray返回一个数组的数组:
public string[][] GetRecordFields(string selectedRecord) {
return (
from record in _recordMasterList
where record.Item1 == selectedRecord
select new string[] {
record.Item2.Keys,
record.Item2.Values
}
).ToArray();
}
Run Code Online (Sandbox Code Playgroud)
在您中,select您需要创建一个字符串数组(new [])。在您的示例中,您正在创建一个新的匿名类型。
public string[][] GetRecordFields(string selectedRecord)
{
string[][] recordFields = (from record in _recordMasterList
where record.Key == selectedRecord
select new []
{
record.Key,
record.Value
}).ToArray();
return recordFields;
}
Run Code Online (Sandbox Code Playgroud)
(我稍微更改了代码以处理 a _recordMasterListof 类型Dictionary<string, string>。此外,在这样的代码中,我发现显式声明变量类型更清晰,而不是依赖隐式类型。也就是说,对于数组,我更喜欢使用隐式数组键入-new []而不是new string[]。)