LINQ 字典到锯齿状数组?

Paw*_*anS 6 c# linq arrays

有一个方法返回 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)

Guf*_*ffa 5

在查询中创建一个字符串数组而不是一个对象,然后将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)


Ric*_*ett 5

在您中,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[]。)