2013-05-30 4 views
0

Привет У меня есть две таблицы tabl1 и table2. Я пытаюсь искать каждую таблицу на определенную дату, как только получаю списки c1 и c2, тогда мне нужно получить объединение двух, поэтому у меня есть один отдельный список без повторяющихся строк, использующих сущность framework.Взяв объединение двух списков IEnumerable и IQueryable

ssEntities sss = new ssEntities(); 
    var c1 = sss.table1.ToList().Where(x => x.date >= DateTime.Today); 
    var c2=sss.table2.ToList().Where(x=>x.date1 DateTime.Today); 
    var ll=c1.Union(c2).ToList(); 

Когда я пытаюсь взять объединение двух списков я получаю ошибку приведены ниже

Instance argument: cannot convert from 
'System.Collections.Generic.IEnumerable<testproject.table1>' to 'System.Linq.IQueryable<testproject.table2>' 

Пожалуйста, помогите.

+0

Являются ли 'table1' и' table2' разными типами? Если это так, вы не можете объединить два 'IEnumerable' разных типов. Вместо этого 'll' должен содержать объекты типа' table1', типа 'table2' или другого выбранного вами типа. –

+0

Проецируйте его в анонимный класс или в общий класс для обоих краев –

+0

Зачем сразу же обращаться к ToList() в таблице1 и таблице2? Перед фильтрацией по дате вы помещаете все содержимое таблицы в память. Вы можете также позволить серверу db сделать эту фильтрацию для вас. – TylerOhlsen

ответ

3

Это достаточно просто

ssEntities sss = new ssEntities(); 
    var c1 = sss.table1.ToList().Where(x => x.date >= DateTime.Today) 
          .Select(x => new { x.Prop1, x.Prop2 }); 
    var c2 = sss.table2.ToList().Where(x => x.date1 >= DateTime.Today) 
          .Select(x => new { x.Prop1, x.Prop2 }); 
    var ll = c1.Union(c2).ToList(); 

Вы должны выбрать только те свойства, которые вы хотите от каждой таблицы, и они должны быть такими же, так что объединение будет работать, вы не можете сделать союзу 2 разных типа.

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