문제
ModelA
다른 테이블 (ModelB 기반)을 사용하여 테이블 (기반) 을 쿼리하려고합니다 . 이 예에서는 이러한 모델이 단순화되었습니다. 결과를으로 유지해야 IQueryable
하므로로 변경 Enumerable
하거나 List
옵션이 아닙니다. 그래도 추가를 시도 .ToList()
했지만 동일한 오류가 발생했습니다.
MyId
하나의 목록 에서 s를 문자열 목록으로 가져 오는 것은 (를 사용하기 위해 Contains()
) 옵션이 아닙니다. MyIds
리소스가 부족하다는 오류를 발생시키는 오류 가 너무 많을 수 있기 때문입니다 (> 40k). RAM을 나타냅니다.
오류
InvalidOperationException : LINQ 식 ...을 번역 할 수 없습니다. 번역 할 수있는 형식으로 쿼리를 다시 작성하거나 AsEnumerable (), AsAsyncEnumerable (), ToList () 또는 ToListAsync ()에 대한 호출을 삽입하여 명시 적으로 클라이언트 평가로 전환합니다.
ModelA
public class ModelA
{
public string MyId { get; set; }
public string MyName { get; set; }
}
ModelB
public class ModelB
{
public string MyId { get; set; }
public string MyName { get; set; }
}
시도
var results = context.ModelA
.Where(a => ModelB.All(b => b.MyId == a.MyId));
이 작업을 성공적으로 수행 할 수있는 방법은 무엇입니까?
두 번째 목록에 일치하는 ID의 'Any ()'가 포함되어 있는지 확인할 수 있습니다.
var results = context.ModelA
.Where(a => ModelB.Where(b => b.MyId == a.MyId).Any());
또는 가입을 시도하고 싶을 수 있습니다
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/join-clause
var results = context.ModelA
.Where(a => ModelB.
Any(b => b!= null && b.id != null
&& a!=null && a.id!==null &&
b.MyId == a.MyId));
Where 대신 Select가 있었고 null을 확인했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다