У меня есть запрос LINQ, извлекающий список, например:
var results = SearchContext.GetQueryable<Person>()
.Where(i => i.Enabled)
.Where(i => i.TemplateName == "Person")
.Random(6);
Каждый объект типа «Человек» имеет поле «Местоположение», которое также является элементом отображения Glass и, следовательно, имеет идентификатор; Я хотел бы выбирать только элементы, местоположение которых имеет определенный идентификатор.
Как я могу сделать это эффективно?
РЕДАКТИРОВАТЬ: я, вероятно, должен уточнить, что я не могу выполнить это сравнение, эффективно или нет. Поскольку GUID является объектом, и я не могу выполнить ToString в запросе LINQ, я не могу выбрать только элементы, чей элемент Location имеет определенный идентификатор. Любые подсказки о том, как это может быть достигнуто?
РЕДАКТИРОВАТЬ 2: Добавление пункта
.Where(i => i.Location.Id == this.Id)
Не работает по... какой-то причине, так как я не могу отлаживать то, что "видит" LINQ. Если я конвертирую другой идентификатор, я сравниваю его со строкой следующим образом:
var theOtherID = this.Id.ToString("N");
Затем он работает с этой строкой LINQ:
.Where(i => i["Location"].Contains(theOtherID))
Я до сих пор понятия не имею, почему.