I가 다음과 같은 SQL 문을 변환하는 데 문제가 LINQ - 투 - 엔티티 :LINQ - 투 - 엔티티
LINQ에서SELECT l.*
FROM locations l
WHERE l.id NOT IN (/* array of ids */)
, 내가 좋아하는 뭔가를보고 싶다
IQueryable<Location> locationQuery = from l in DataContext.Location
where !myCollection.Contains(l)
select l;
하지만 그 때문에 포함되지 (내가보기로) LINQ - 투 - 엔티티에 사용할 수없는 것 (myCollection 항목의 일반적인 목록입니다 제외한다). 최선/가장 가까운 LINQ 시도, 나는 위치의 내 컬렉션 (목록)을하고 난이 데이터베이스에서 기존의 모든 위치 검색하는 DataContext를 :
List<Location> Route = new List<Location>();
// Some code to add Location entities from the DB to the Route collection
var innerQuery = from p in Route
select p.ID;
IQueryable<Location> locationQuery = from l in DataContext.Location
where !((innerQuery).Any(k => k == l.ID))
select l;
가 분명히 나는 모든 위치를 얻으려면을 DB는 내 로컬 컬렉션에 없습니다. 그러나 코드는 다음과 같은 NotSupportedException을 발생시킵니다.
'Closure type'유형의 상수 값을 생성 할 수 없습니다. 이 컨텍스트에서는 원시 형식 (예 : 'Int32, String 및 Guid') 만 지원됩니다.
나는 다른 접근법을 사용하여 주변을 둘러 보았지만 작동시키지 못했습니다. 이제 LINQ-to-entities가 위의 오류를 설명 할 수있는 상위 수준의 비교 (개체 수준)를 수행 할 수 없다는 사실을 읽었습니다.
내 실제 질문은 LINQ에서 SQL로 그렇게 쉽게 할 수있는 방법은 무엇입니까? 난 단지 DB에서 엔터티를 제외하고 로컬 (비 DB) 컬렉션에있는 엔터티를 제외하고 싶다.
오신 것을 환영합니다, 내가 여기에 비슷한 변환 문제를 제기 LINQ - 투 - SQL 기능의 절반 아니지만 ... –
에 대한 대체; http://stackoverflow.com/questions/4093592/how-to-lookup-entities-in-entityframework-4-by-a-finder-interface-works-in-linq 나는 아직 해결할 운이 없었습니다. EF에서 할 수없는 LinqToSql에서 할 수있는 일이 많이 있습니다. 그것은 매우 짜증나거나 실망 스럽습니다. 귀하의 질문은 조금 다르지만 최종 결과는 유사합니다. 내가 한 것보다 더 많은 성공을 거둘 수 있기를 바랍니다. –