2

EF linq クエリを使用してドメイン オブジェクトから値を収集しようとしています。しかし、エラーが発生しています。これを修正するのに役立つ人もいます。

public String[] ReturnPatientIDs(int CounsellingRoomID)
{

    var messageObject = this.context.CounsellingMessages.Where(c => c.CounsellingRoomID == CounsellingRoomID).Distinct();

    String[] PatientIDs = new String[messageObject.Count()];

    for (int k = 0; k < PatientIDs.Length; k++)
    {
        PatientIDs[k] = messageObject.ElementAt(k).Chatname;
    }

    return PatientIDs;
}

LINQ to Entities はメソッド 'Me.Domain.General.CounsellingMessage ElementAt[CounsellingMessage](System.Linq.IQueryable`1[Me.Domain.General.CounsellingMessage], Int32)' メソッドを認識せず、このメソッドを店舗表現。

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.NotSupportedException: LINQ to Entities はメソッド 'MedicalApp.Domain.General.CounsellingMessage ElementAt[CounsellingMessage](System.Linq.IQueryable`1[MedicalApp.Domain.General.CounsellingMessage], Int32)' メソッドを認識しません。このメソッドは store 式に変換できません。

ソース エラー:

Line 43:             for (int k = 0; k < PatientIDs.Length; k++ )
Line 44:             {
Line 45:                 PatientIDs[k] = messageObject.ElementAt(k).Chatname;
Line 46:             }
Line 47: 
4

1 に答える 1

2

ElementAtメソッドはサポートされていません。クエリは、呼び出してmessageObject実行するまで実行されず、LINQ to Entity クエリとして扱われます。Count()ElementAt()

ループで実行されるアクションは、次のステートメントforを追加することで、LINQ クエリにロールインできます。Select

public String[] ReturnPatientIDs(int CounsellingRoomID)
{
    var query = this.context.CounsellingMessages
                    .Where(c => c.CounsellingRoomID == CounsellingRoomID)
                    .Select(c => c.Chatname)
                    .Distinct();

    return query.ToArray();
}
于 2013-10-21T00:48:05.163 に答える