Также, если вам нужно проверить некоторую подстроку, вы можете использовать метод contains
:
Menu.answer1 = "London";
Menu.answer1.contains("ondo"); // true
ОБНОВЛЕНИЕ: На самом деле я недавно добавил еще один совет, который покрывает это и предоставляет альтернативное, возможно, лучшее решение. Идея состоит в том, чтобы отложить использование Include () до конца запроса, см. Это для получения дополнительной информации: Совет 22 - Как сделать включение действительно включенным
В Entity Framework есть известные ограничения при использовании Include (). Некоторые операции просто не поддерживаются с помощью Include.
Похоже, что вы, возможно, столкнулись с одним из этих ограничений, чтобы обойти это, вы должны попробовать что-то вроде этого:
var results =
from e in dc.Entities //Notice no include
join i in dc.Items on e.ID equals i.Member.ID
where (i.Collection.ID == collectionID)
select new {Entity = e, Properties = e.Properties};
Это вернет Свойства, и если связь между Сущность и Свойства - это один ко многим (но не много ко многим), вы обнаружите, что каждый результирующий анонимный тип имеет одинаковые значения в:
anonType.Entity.Properties
anonType.Properties
Это побочный эффект функции в Entity Framework, называемой фиксацией отношений.
См. Этот совет 1 в моей серии EF Tips для получения дополнительной информации.
Так, как называется свойство навигации в «Entity», которое относится к «Item.Member» (т. Е. Является другим концом навигации). Вы должны использовать это вместо соединения. Например, если «сущность» добавила свойство с именем Member с количеством элементов 1, а у Member было свойство с именем Items, имеющее множество элементов, вы могли бы сделать это:
from e in dc.Entities.Include("Properties")
where e.Member.Items.Any(i => i.Collection.ID == collectionID)
select e
Я предполагаю, что свойства вашей модели здесь, но это должно дать вам общее представление. В большинстве случаев использование объединения в LINQ to Entities является неправильным , поскольку предполагает, что либо ваши навигационные свойства настроены неправильно, либо вы их не используете.
Попробуйте более подробный способ сделать более или менее то же самое получить те же результаты, но с большим количеством вызовов данных:
var mydata = from e in dc.Entities
join i in dc.Items
on e.ID equals i.Member.ID
where (i.Collection.ID == collectionID)
select e;
foreach (Entity ent in mydata) {
if(!ent.Properties.IsLoaded) { ent.Properties.Load(); }
}
Вы все еще получаете то же самое (неожиданно ) результат?
РЕДАКТИРОВАТЬ : Изменено первое предложение, так как оно было неверным. Спасибо за комментарий-указатель!
Попробуйте следующее:
var query = (ObjectQuery<Entities>)(from e in dc.Entities
join i in dc.Items on e.ID equals i.Member.ID
where (i.Collection.ID == collectionID)
select e)
return query.Include("Properties")