2
我正在使用Azure並發現性能較慢。爲了減少往返時間,我將以下查詢分爲一個查詢。在Neo4jClient中返回多個列Cypher查詢
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((n, m) => new
{
N = n.CollectAs<Node<Item>>(),
M = m.CollectAs<Node<Item>>()
});
但後來我有下面的語句
Node<Item> item1 = itemQueryResult.First();
問題,它說錯誤無法隱式轉換類型「AnonymousType#1」到「Neo4jClient.Node。
你可以請建議一個簡單的語法或返回多個列和一種方式來提取第一個節點? TIA。
lol @泡吧評論。 – Anshul 2013-05-08 19:49:56
再次感謝您的詳細解釋。這說得通。儘管我遇到兩個問題。首先,如果n或m與索引不匹配,則查詢返回零結果。我想我會得到N或M爲空,所以至少我可以得到一個值。我發現的另一個問題是,如果indexlookup失敗,單引發異常。我解決了使用.ToList()。所以結合:)類型的作品,但需要獲得所有結果。 – Anshul 2013-05-08 19:55:27
如果您有0或2或3或其他任何數量的結果,則單個設計將會拋出異常,但不會失敗。 – 2013-05-09 00:08:16