У меня есть небольшая проблема, которую я не могу решить. Я хочу использовать SQL-In-Statement в Linq. Я читал на этом Форуме и в других форумах, что я должен использовать .Contains (с обратным мышлением-обозначением :-)). В качестве ввода у меня есть список гидов. Я первый скопировал их в массив, а затем сделал что-то вроде этого:Проблема с содержит
datatoget = (from p in objectContext.MyDataSet
where ArrayToSearch.Contains(p.Subtable.Id.ToString())
select p).ToList();
datatoget является результатом, в котором все записи, соответствующие Subtable.Id (который является Guid) должны быть сохранены. Подтаблица - это подробный стол из MyData, а Id - тип Guid. я пытался несколько вещей (Преобразование Guid в строку, а затем с помощью .Contains и т.д.), , но я всегда получаю исключение, которое говорит:
«Linq к Entities» не признает Логический метод»Содержит (System.Guid) и не может преобразовать этот метод в выражение памяти. (что-то вроде этого, потому что я использую немецкую версию VS2008)
Я использую L2E с .NET 3.5 и я программирования в C# с VS 2008.
Я прочитал несколько примеров, но он не работает. Возможно, это из-за использования Guid вместо строк? Я также пытался написать свою собственную функцию сравнения, но я не знаю, как ее интегрировать, чтобы .NET вызывала мою функцию для сравнения.
См. Также http://stackoverflow.com/questions/374267/contains-workaround-using-linq-to-entities –
Роберт прав, это дубликат для 3.5, но также 4.0 непосредственно поддерживает 'Contains()'. –