2015-02-23 3 views
1

Хочу сравнить два списка выделенных из двух разных таблицСравнение двух списков разных таблиц с EntityFramework

var maListe = db.exclure.Where(w => w.type.Contains("Object class")) 
         .GroupBy(g => new {libelle = g.libelle,}) 
         .Select(s => new {libellex = s.Key.libelle}).ToList(); 

var myList = db.Full.Where(c => c.date_reception > new DateTime(2015, 02, 02)) 
       .Where (c => !maListe.Any(c2 => c2.libellex.Contains(c.mc_object_class))) 
       //.Where (p => p.mc_object_class.CompareTo("NULL")<0) 
       .GroupBy(f => new 
        { 
         object_class = f.mc_object_class, 
        }) 
       .Select(g => new 
        { 
         object_classx = g.Key.object_class, 
         countx = g.Count() 
        }) 
       .Take(10) 
       .OrderByDescending(o => o.countx) 
       .ToList(); 

Я ищу элементов, существующих в myList, а не в maListe, в ходе выполнения кода выше I получить следующее сообщение об ошибке:

Unable to create a constant value of type 'Anonymous type'. Only primitive types or enumeration types are supported in this context.'

ответ

1

Вы должны материализовать свою коллекцию, что-то вроде:

var maListe = db.exclure.Where(w => w.type.Contains("Object class")) 
        .GroupBy(g => new {libelle = g.libelle,}) 
        .Select(s => new {libellex = s.Key.libelle}).ToList(); 

var myList = db.Full.Where(c => c.date_reception > new DateTime(2015, 02, 02)) 
      .AsEnumerable() // database query ends here 
      .Where (c => !maListe.Any(c2 => c2.libellex.Contains(c.mc_object_class))) 
      //.Where (p => p.mc_object_class.CompareTo("NULL")<0) 
      .GroupBy(f => new 
       { 
        object_class = f.mc_object_class, 
       }) 
      .Select(g => new 
       { 
        object_classx = g.Key.object_class, 
        countx = g.Count() 
       }) 
      .Take(10) 
      .OrderByDescending(o => o.countx) 
      .ToList(); 

Если у вас есть время, пожалуйста, взгляните на msdn

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