2011-04-07 3 views
4

LINQ-SQL에서 가장 이상한 데이터 정렬 오류가 있습니다. 나는이 매개 변수에 대해 왼쪽과 오른쪽 조인을 수행하는 쿼리를 사용합니다. 쿼리에서 왼쪽에 조인 된 테이블에 대한 열을 추출하려면 null이 아니거나 그렇지 않으면 첫 번째 테이블에서 추출해야합니다. 해당 필드는 문자이며 두 테이블 모두 동일한 데이터 정렬을 사용합니다. LINQ 코드는 아래에 표시되며 오류의 원인이되는 줄을 굵게 표시했습니다.LINQ to SQL을 사용하는 이상한 데이터 정렬 문제

from contentList in dc.ContentList 
    join portalPriceClass in dc.PortalContentPriceClass 
    on contentList.ContentID equals portalPriceClass.ContentID 
    into ppc 
from portalSpecificPriceClass in ppc.Where(portalPriceClass => 
    portalPriceClass.PortalID==portalId).DefaultIfEmpty() 
where contentListPriority.PortalID == portalId 
select new 
{ 
    ID = content.ID, 
    PriceClass = (portalSpecificPriceClass == null) ? contentGame.PriceClass : portalSpecificPriceClass.PriceClass 
}; 

불행하게도, 나는 다음과 같은 오류가 발생하고 설명하기 위해 아무것도 찾을 수 없습니다

System.Data.SqlClient.SqlException을 : char 값의 암시 적 변환이 때문에 수행 할 수 없습니다 숯불하기 데이터 정렬의 충돌로 인해 값의 데이터 정렬이 해결되지 않습니다.

+0

버전 .NET? – tomsv

답변

1

sp_help를 사용하여 테이블을 검사하여 열에 다른 데이터 정렬이 있는지 확인할 수 있습니까?

가 매우 당신은 좀 더 쉽게 쿼리를 확인하고 문제를 방지 할 수 here

0

그 문제에 대한 설명을 통해 또한, 나는이해야 "일을"생각 :

from a in dc.ContentList 
where a.ContentID != null 
select new { ID = a.ContentID, a.PriceClass, .. }).Union(
    from b in dc.ContentList 
    where dc.ContentList.FirstOrDefault(a => a.ContentID == b.ContentID) == null) 
    select new { ID = b.ContentID, b.PriceClass, .. });