【发布时间】:2021-03-31 03:56:21
【问题描述】:
我进行了很多研究,但我无法理解为什么会出现此错误,在调试时我可以看到“fgroup”中键的值,但它仍然抛出以下错误:-
{
"Message": "An error has occurred.",
"ExceptionMessage": "'object' does not contain a definition for 'key'",
"ExceptionType": "Microsoft.CSharp.RuntimeBinder.RuntimeBinderException",
"StackTrace": " at CallSite.Target(Closure , CallSite , Object )\r\n at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)\r\n at WEBAPINILAYAM.Controllers.HomeController.TempMethod(List`1 firstRecord, List`1 secoudRecord)\r\n at WEBAPINILAYAM.Controllers.HomeController.<GetUserList>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__1`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"
}
请在下面找到我的代码:-
var flatuser = await (from f in DatabaseContext.FlatUserDetails
where f.SocietyCode.Equals(SocietyCode)
select new
{
userName = f.Users.UserName,
fullName = f.Users.FullName,
phoneNumber = f.Users.PhoneNumber,
email = f.Users.Email,
flatNumber = f.FlatDetails.FlatNumber,
buildingNumber = f.BuildingDetails.BuildingNumber
}).GroupBy(x => x.userName).ToListAsync<dynamic>();
foreach (var fgroup in flatuser)
{
String k = fgroup.key; // Getting error at this line
foreach(var temp in fgroup)
{
// accessing the object
}
}
请帮助我,我想获取密钥的值。
【问题讨论】:
-
我也试过“fgroup.Key”,但还是同样的错误。
-
您是否在视图中使用
foreach? -
不,这是一个 Web API,我在控制器的方法中使用它。
-
你为什么用
dynamic? -
我使用的是动态的,因为我没有使用模型类对象,select里面的所有变量都是匿名类型的。如果我删除动态,那么我必须首先创建一个模型类并使用定义的属性在查询中创建它的对象。