2012-01-27 2 views
2

2 개의 LINQ 목록을 병합 한 후 문제가 있습니다. 다음 오류가 발생합니다. 쿼리에 다른 데이터 컨텍스트에 정의 된 항목에 대한 참조가 포함되어 있습니다. 내가 잘못 뭐하는 거지2 개의 LINQ 목록을 병합하는 중 오류가 발생했습니다.

CAPDBDataContext CAdb = new CAPDBDataContext(); 
USPDBDataContext USdb = new USPDBDataContext(); 

var ExceptionList = Special_texts.Where(x => x.name.Equals("ExceptionList")) 
        .Select(x => x.special_text1) 
        .AsEnumerable() 
        .Select(x => x.Split(new[] { '#' }, StringSplitOptions.RemoveEmptyEntries)) 
        .SelectMany(x => x) 
        .ToList(); 

var USquery = from uscomp in USdb.UScompanies 
       join ussect in USdb.USsectors 
       on uscomp.sector_code equals ussect.sector_code 
       select new 
       { 
        uscomp.company_name, 
        uscomp.primary_exchange, 
        ussect.description 
       }; 

var CAtemp = from x in CAdb.companies 
      where !ShefalisList.Contains(x.ticker) 
      select x; 

var CAquery = from temp in CAtemp 
      join casect in CAdb.sectors 
      on temp.sector_code equals casect.sector_code 
      select new 
      {       
       temp.company_name, 
       temp.primary_exchange,        
       casect.description 
      }; 

var mergedList = USquery.Union(CAquery).ToList(); 

:

이것은 내 마지막 2 LINQ 목록을 구성하는 방법입니다?

답변

5

대신이 작업을 수행 :

var mergedList = USquery.AsEnumerable().Union(CAquery).ToList() 

당신이 할 수없는 메모리에 결과를받지 않고 다른 데이터베이스를 통해 Union 쿼리.

+1

+1 : ToList() 대신에 AsEnumerable()을 사용하는 것이 좋습니다 (첫 번째 섹션에서는 여기에 목록을 작성할 필요가 없습니다). 그러면 두 번째'AsEnumerable()'호출도 불필요하게됩니다 ... –

+0

@ReedCopsey 'var ExceptionList ='코드를 참조하고 있습니까? (첫 번째 섹션). 그런 다음 mergedlist가 'var mergedList = USquery.Union (CAquery) .ToList()'와 같이 표시되도록 제안 하시겠습니까? –

+0

CSVExtension 클래스를 만들었지 만 병합에서 목록 열거를 가져올 수 없습니다. 'public static class CSVExtensions { public static void WriteToCSVFile (this IEnumerable mergedList)'와 같이 생성했습니다. 이게 맞지 않아? –

관련 문제