作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Azure,发现性能很慢。为了减少往返时间,我将以下查询合并为一个查询。
var queryItem = _graphClient
.Cypher
.Start(new
{
n = Node.ByIndexLookup("item_idx", "SKU", sSKU1),
})
.Return<Node<Item>>("n");
我在代码的其他地方有以下语句
var queryItem = _graphClient
.Cypher
.Start(new
{
m = Node.ByIndexLookup("item_idx", "SKU", sSKU2),
})
.Return<Node<Item>>("m");
我试图将以上两个查询组合成一个这样的查询
var queryItem = _graphClient
.Cypher
.Start(new
{
n = Node.ByIndexLookup("item_idx", "SKU", sSKU1),
m = Node.ByIndexLookup("item_idx", "SKU", sSKU2),
})
.Return<Node<Item>>("n");
我知道以上仅适用于单列,所以我尝试使用以下 return 语句
.Return((n, m) => new
{
N = n.CollectAs<Node<Item>>(),
M = m.CollectAs<Node<Item>>()
});
但是我对下面的语句有疑问
Node<Item> item1 = itemQueryResult.First();
它说错误无法将类型“AnonymousType#1”隐式转换为“Neo4jClient.Node”。
您能否建议一个简单的语法或返回多列以及提取第一个节点的方法? TIA。
最佳答案
我认为您在这里缺少的是 Return
语句返回一个对象每个 Cypher 行。
您的查询返回的表格如下:
|-----------------|
| n | m |
|-----------------|
| Node | Node |
|------------------
那是一张表,一行两列。
在此语句中,您返回一个匿名类型每个 Cypher 行:
.Return((n, m) => new
{
N = n.CollectAs<Node<Item>>(),
M = m.CollectAs<Node<Item>>()
});
该方法的返回类型是IEnumerable<AnonymousType>
.
然后您将尝试获取第一个行(匿名类型)并将其隐式转换为 Node<Item>
, 这是无效的。
您应该获取该行,然后获取其中的属性。
其他一些注意事项:
CollectAs
在这种情况下:这会将表格的每个单元格 变成一个具有单个值的数组,这只会增加更多的间接性。.As<Node<T>>()
可以写成 .Node<T>()
考虑到这一点,这是您想要的查询:
var result = _graphClient
.Cypher
.Start(new
{
n = Node.ByIndexLookup("item_idx", "SKU", sSKU1),
m = Node.ByIndexLookup("item_idx", "SKU", sSKU2),
})
.Return((n, m) => new
{
N = n.Node<Item>(),
M = m.Node<Item>()
})
.Results
.Single();
var n = result.N;
var m = result.M;
有道理吗?
PS:我希望你实际上没有泡吧。小海豹不喜欢这样。您正在组合查询。
关于neo4jclient - 在 Neo4jClient Cypher 查询中返回多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16431716/
我是一名优秀的程序员,十分优秀!