0
我使用LINQ使在documentdb集合其中包括項目有兩個單獨的陣列一樣的查詢:文檔DB LINQ查詢,之後的SelectMany的SelectMany
{
name: "Family 1",
cars: ["Toyota", "Honda"],
pets: ["Cat", "Dog"]
}
比方說,我想找到家人豐田,我會用這樣的一個查詢:
var families = Client.CreateDocumentQuery<T>(dLink)
.SelectMany(f => f.Cars
.Where(car=> car == "Toyota")
.Select(car => f));
這工作得很好。當檢查生成的SQL查詢它看起來也如預期:
SELECT VALUE root FROM root JOIN car IN root[\"Cars\"] WHERE (car= \"OU=Brugere\")
如果我想找到一個豐田和狗所有的家庭,我會希望能夠使用一個查詢,看起來是這樣的:
var families = Client.CreateDocumentQuery<T>(dLink)
.SelectMany(f => f.Cars
.Where(car=> car == "Toyota")
.Select(car => f))
.SelectMany(f => f.Pets
.Where(pet => pet == "Dog")
.Select(pet => f));
這失敗,一個神祕的錯誤消息:
{"errors":[{"severity":"Error","location":{"start":109,"end":111},"code":"SC2001","message":"Identifier 'pet' could not be resolved."}]}
在視察生成的SQL查詢,它看起來並不如預期:
SELECT VALUE root FROM root JOIN car IN root[\"Cars\"] WHERE ((car= \"Toyota\") AND (pet = \"Dog\")) "}
這使得顯而易見的,爲什麼「寵物」不能得到解決,它缺少在根加入了寵物[\「寵物」]
如何使兩種不同的通過LINQ連接在documentdb?