2016-04-25 13 views
0

以下のクエリでこのエラーが表示されます。私は他の同様のリンクを検索しましたが、これを動作させることはできません:定数の値を作成できません

'匿名型'の定数値を作成できません。このコンテキストでは、 プリミティブ型または列挙型のみがサポートされています。

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

それはあなたの問題の原因だ場合、私は知らないが、あなたは不必要に匿名型を作成しているようです。なぜ 'group by a.EmployeeID into g'の代わりに' new {a} by new {a.EmployeeID} 'を 'g'に使うのですか? –

+0

ありがとう、私は問題を分解しようとするために複数の列を取り除いていた - そしてかなり新しいlinq。 – jaykzoo

答えて

1

あなたはSQLに変換されたLINQクエリで、オブジェクト、usersの局所的なシーケンスを使用するため、このエラーを取得しています。しかし、UserMovementオブジェクトの翻訳はありません。あなたは、彼らはプリミティブ値が含まれている場合にのみ、SQLバックエンドにLINQでのローカルシーケンスを使用することができます。

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

Gertさん、ありがとうございました。 – jaykzoo

関連する問題