2012-01-27 2 views
2

У меня возникли проблемы после слияния двух списков LINQ. Я получаю следующую ошибку: запрос содержит ссылку на элементы, определенные в другом контексте данных.Ошибка при объединении 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(); 

Что я делаю неправильно?

ответ

5

ли это вместо:

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

Вы не можете Union запросы по различным базам данных без получения их результатов в память.

+1

+1: Я бы рекомендовал использовать 'AsEnumerable()' вместо 'ToList()' (для первого раздела - нет необходимости в создании списка здесь), что также сделает второй вызов AsEnumerable() ненужным ... –

+0

@ReedCopsey вы имеете в виду код 'var ExceptionList ='? для (1-й раздел). Затем вы предполагаете, что объединенный список должен выглядеть так: «var mergedList = USquery.Union (CAquery) .ToList()»? –

+0

Я создал класс CSVExtension, но я не могу получить список перечислений из слияния. Я создал его как «public static class CSVExtensions { public static void WriteToCSVFile (этот IEnumerable mergedList) '. Разве это не так? –

Смежные вопросы