#linq #linq-to-sql #linq-to-entities
#linq #linq-to-sql #linq-to-entities
Вопрос:
использование ef4
я пытаюсь преобразовать этот sql в linq, но не смог
select s.IdSimcard ,s.Imei from dbo.SimCard s
where s.Imei not in (select distinct d.Imei from dbo.SimCard d inner join dbo.Configuracion c
on c.SinCard_IdSincard = d.IdSimcard
where c.Estado = 'Activo' )
Пока у меня есть это с помощью linqpad, я больше не могу использовать linquer для кода активации
(from s in SimCard where s.Imei.Contains( (from c in Configuracion
join d in SimCard on c.SinCard_IdSincard equals d.IdSimcard
where c.Estado == "Activo"
select new { d.Imei }).Distinct())
select new { s.IdSimcard, s.Imei })
Я прочитал, что «Not in» не поддерживается в EF4, что было бы эквивалентно?
я получаю эту ошибку в linqpad
‘строка.Содержит(строку)’ — Аргумент 1: не удается преобразовать de ‘System.Linq.IQueryable’ в ‘string’
Комментарии:
1. попробуйте это: sqltolinq.com извините, я сегодня устал 🙂
2. не могу больше использовать мою пробную версию, срок действия которой истек: (
3. из s в SimCard, где! (из c в конфигурации, где c.Estado == «activo» выберите c.sincard_idsincard_idsincard). Содержит (s.IdSimcard) выберите новый {s.IdSimcard, s.Imei} ок, похоже, этого хватит 🙂
4. вы можете опубликовать свое собственное решение в качестве ответа и принять его, чтобы повысить свой рейтинг репутации. Однако подумайте, является ли решение RedHat более простым для linq. Удачи.
Ответ №1:
Если я понимаю ваш вопрос, вы можете использовать Except(...)
метод расширения (в системе.Пространство имен Linq) вместо Not Contains(...)
.