Я пытаюсь использовать словарь в IQueryable, но получаю ошибку во время выполнения, я знаю, что проблема возникает, потому что в реальном времени IQueryable не знаком с этим объектом, я пытаюсь преобразовать IQueryable в IEnumerable, но у меня проблема с выполнением запроса. Может кто-нибудь подскажет, как выполнить эту функцию?
У меня такой код:
Dictionary<String, int> coursesType= new Dictionary<string, int>();
var userQuery = _client.CreateDocumentQuery<ObjectModel.Student>(uriStudentCollection, options).
Where(x =>coursesType.ContainsKey(x.MainCourse)
&& !x.Courses.ContainsKey(requestCourse)).OrderBy(x => x.Grade).AsDocumentQuery();
var feedResponse = await userQuery.ExecuteNextAsync<ObjectModel.Student>();
foreach (var ad in feedResponse.AsEnumerable())
{
results.Add(ad);
}
СТАТУС ОБНОВЛЕНИЯ: Я НЕ ПОЛУЧИЛ ОТВЕТ НА МОЙ ВОПРОС
*** ОБНОВЛЕНИЕ: добавляю пример своего документа.
{
"id": "a5d7f123-80d5-5094-84fb-08c3bc4ccp972",
"StudentName": "Philip",
"Courses": {
"Math": {
"id": "Math",
"Grade": "98",
"Place": "NYC"
}
},
"Rank":"AA"
}
ОБНОВЛЕНИЕ НОМЕР 3
Пишу такой запрос:
SqlQuerySpec q = new SqlQuerySpec()
{
QueryText = "SELECT * FROM c WHERE (CONTAINS(LOWER(c[\"courseName\"]),@text) OR CONTAINS(LOWER(c[\"courseDescription\"]),@text) ) AND (udf.CourseContainsKey(c[\"Courses\"],@courseId)=false)",
Parameters = new SqlParameterCollection()
{
new SqlParameter("@text", text),
new SqlParameter("@courseId", courseId)
}
};
Когда я пишу такой запрос, он работает нормально, но ЕСЛИ я добавляю команду ORDER BY к запросу, я получил пустой набор ....
"SELECT * FROM c WHERE (CONTAINS (LOWER (c [\" courseName \ "]), @ text) OR CONTAINS (LOWER (c [\" courseDescription \ "]), @ text)) И (udf.CourseContainsKey (c [\ "Курсы \"], @ courseId) = false) ЗАКАЗАТЬ c [\ "courseName \"] ASC "
Спасибо
Спасибо,
MAK