181

以下のクエリでこのエラーが発生します

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

ppCombined以下は のIEnumerableオブジェクトでPersonProtocolType、2 つのリストの連結によって構築されPersonProtocolます。

なぜこれが失敗するのですか?内でLINQJOIN句を使用できませんか?SELECTJOIN

var persons = db.Favorites
    .Where(x => x.userId == userId)
    .Join(db.Person, x => x.personId, y => y.personId, (x, y) =>
        new PersonDTO
        {
            personId = y.personId,
            addressId = y.addressId,                   
            favoriteId = x.favoriteId,
            personProtocol = (ICollection<PersonProtocol>) ppCombined
                .Where(a => a.personId == x.personId)
                .Select( b => new PersonProtocol()
                 {
                     personProtocolId = b.personProtocolId,
                     activateDt = b.activateDt,
                     personId = b.personId
                 })
        });
4

6 に答える 6

2

誰かがこれを検索するかどうかわかりません。私も同じ問題を抱えていました。クエリを選択してから、where (または結合) を実行し、select 変数を使用すると、問題が解決しました。(問題は私にとってコレクション「再統合」にありました)

query.Select(zv => new
            {
                zv,
                rId = zv.this.Reintegraties.FirstOrDefault().Id
            })
            .Where(x => !db.Taken.Any(t => t.HoortBijEntiteitId == x.rId
                                             && t.HoortBijEntiteitType == EntiteitType.Reintegratie
                                             && t.Type == TaakType))
            .Select(x => x.zv);

これが誰かに役立つことを願っています。

于 2016-04-06T07:23:13.590 に答える