无法使用的SelectMany在DocumentDb LINQ查询来获取parent属性

问题描述:

我有一个嵌套的文件结构,如:无法使用的SelectMany在DocumentDb LINQ查询来获取parent属性

[ 
    { 
    "id": "parent1", 
    "children": [ 
     { 
     "id": "child1", 
     "foo": "bar" 
     }, 
     { 
     "id": "child2", 
     "foo": "bar" 
     }, 
     { 
     "id": "child3", 
     "foo": "bar" 
     } 
    ] 
    }, 
    { 
    "id": "parent2", 
    "children": [ 
     { 
     "id": "child4", 
     "foo": "bar" 
     }, 
     { 
     "id": "child5", 
     "foo": "bar" 
     } 
    ] 
    } 
] 

我能写SQL语法以下查询:

SELECT child, parent.id 
FROM parent 
JOIN child in parent.children 

这得到我以下结果:

[ 
    { 
    "child": { 
     "id": "child1", 
     "foo": "bar" 
    }, 
    "id": "parent1" 
    }, 
... 
] 

我写了一个类似的查询在LINQ使用SelectMany子句如下s,但它会引发一个错误,说明SelectMany只能有2个参数。

collection.SelectMany(
    parent => parent.children, 
    (parent, child) => new { child, parent.id }); 
+0

您的查询看起来很确定我。它是不是理解这个“SelectMany”超载的O-R映射器?确切的错误信息?如果是,dasblinkenlight的答案可以解决它。 – tinudu

你需要“推动”第二半波的第一半波带内嵌套Select,像这样:

collection.SelectMany(
    parent => parent.children.Select(child => new { 
     Child = child 
    , ParentId = parent.id 
    }) 
);