2011-08-15 2 views
0

나는 아래의 Linq To SQL 메서드를 사용합니다. 내가 코드 spcCodeIDs을 빠져 나올 때 내가 기대하고있는 7 가지 항목이 들어 있습니다. 그러나 내가 놓친 게 무엇Linq에서 .Contains를 사용하는 SQL 메서드가 실패합니다.

Method 'Boolean Contains(System.String)' has no supported translation to SQL.

의 런타임 예외가? SQL에

public static DataTable GetSPCCodeList() 
{   

    using (var context = ProviderDataContext.Create()) 
    { 
     IQueryable<tblProviderAdminSPCCode> tSPCCode = context.GetTable<tblProviderAdminSPCCode>(); 
     IList<string> spcCodeIDs = BLLCmo.FCApprovedSPCsForGreenSheet(); 
     return (tSPCCode 
       .Where(spcCode => spcCode.Inactive == null && spcCodeIDs.Contains(spcCode.SPCCodeID)) 
       .OrderBy(spcCode => spcCode.SPCCodeID) 
       .Select(spcCode => new { spcCode.SPCCodeID, spcCode.SPCDescription, spcCode.SPCCategoryID })) 
       .CopyLinqToDataTable(); 
    } 
} 

답변

5

LINQ는 지원 번역 ...

당신은 통과해야
List<string> spcCodeIDs = BLLCmo.FCApprovedSPCsForGreenSheet().ToList(); 
+0

굉장, 고마워. 난 몰랐어. –

+0

@ 팔라딘 퇴장! 처음에는별로 의미가 없지만 한계에 익숙해졌습니다. –

0

IList<string> spcCodeIDs = BLLCmo.FCApprovedSPCsForGreenSheet(); 

에서 라인을 변경하려고 구체적인 목록이 아닌 IList의 인터페이스를 형성 포함 할 수 있습니다 Contains의 파라미터로서의 캐릭터 라인 그래서 통과 spcCode.SPCCodeID.ToString()

관련 문제