我正在尝试通过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)”方法,并且此方法不能转换为商店表达式。
源错误:
Line 43: for (int k = 0; k < PatientIDs.Length; k++ ) Line 44: { Line 45: PatientIDs[k] = messageObject.ElementAt(k).Chatname; Line 46: } Line 47:
ElementAt
不支持该方法。在messageObject
不执行查询,直到你打电话Count()
,并ElementAt()
在其上,而那些被视为对LINQ实体的查询。
for
通过添加以下Select
语句,可以将循环中执行的操作纳入您的LINQ查询中:
public String[] ReturnPatientIDs(int CounsellingRoomID)
{
var query = this.context.CounsellingMessages
.Where(c => c.CounsellingRoomID == CounsellingRoomID)
.Select(c => c.Chatname)
.Distinct();
return query.ToArray();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句