2016-04-25 8 views
0

erstellen Ich erhalte diesen Fehler in der Abfrage unten. Ich habe andere ähnliche Links durchsucht, aber das funktioniert nicht:Konnte keinen konstanten Wert vom Typ

Es konnte kein konstanter Wert vom Typ 'Anonymer Typ' erstellt werden. In diesem Kontext werden nur primitive Typen oder Aufzählungstypen unterstützt.

var users = from a in GetUsers(EmployeeID) 
       group new { a } by new { a.EmployeeID } into g 
       select new UserMovement { EmployeeID = g.Key.EmployeeID }; 


    var resulttst = from s in _repository.GenericRepository<STG_WDUsers>().GetAll() 
        join u in users on s.Employee_ID equals u.EmployeeID 
        where s.EffectiveDate != null && s.EffectiveDate > dtSixMonths 
        group new { s } by new { s.Employee_ID, s.Business_Unit, s.First_Name, s.Last_Name } into g 
        orderby g.Key.Employee_ID, g.Min(m => m.s.EffectiveDate) 
        select new UserMovement 
        { 
         EffectiveDate = g.Min(m => m.s.EffectiveDate), 
         EmployeeID = g.Key.Employee_ID, 
         FirstName = g.Key.First_Name, 
         LastName = g.Key.Last_Name, 
         BusinessUnit = g.Key.Business_Unit, 
         PreviousBU = null 
        }; 
+0

Ich weiß nicht, ob es die Ursache des Problems ist, aber Sie scheinen unnötig anonyme Typen zu erschaffen. Warum verwenden Sie 'group new {a} von new {a.EmployeeID} in g' statt nur' group by a.EmployeeID in g'? –

+0

Danke, ich hatte mehrere Spalten entfernt, um das Problem zu lösen - und ziemlich neu für linq. – jaykzoo

Antwort

1

Sie bekommen diese Fehler, da Sie eine lokale Sequenz von Objekten verwendet werden, users, in einer LINQ-Abfrage, die in SQL übersetzt wird. Es gibt keine Übersetzung für UserMovement Objekte obwohl. Sie können lokale Sequenzen in LINQ to SQL-Backend verwenden, aber nur, wenn sie primitive Werte enthalten:

var empIds = (from a in GetUsers(EmployeeID) 
       select a.EmployeeID).Distinct(); 
from s in _repository.GenericRepository<STG_WDUsers>().GetAll() 
        .Where(u => empIds.Contains(u.Employee_ID)); 
+0

Danke Gert, das hat geholfen. – jaykzoo

Verwandte Themen