使用EntityFramework比较来自不同表的两个列表

时间:2015-02-23 15:51:38

标签: c# asp.net .net asp.net-mvc entity-framework

我想比较从两个不同的表中提取的两个列表

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中存在的元素,在运行上面的代码时,我收到以下错误:

  

无法创建类型&#39;匿名类型&#39;的常量值。只要   在此上下文中支持原始类型或枚举类型。&#39;

1 个答案:

答案 0 :(得分: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