如何解决以下错误 [英] How to resolve below error

查看:80
本文介绍了如何解决以下错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何解决



错误:表达式树可能不包含动态操作

代码:

  var  usrcat = snw.Users.Where(u = >  u.UserID == ViewBag.userid)
.Select(u => u.Category).SingleOrDefault();

var fee = snw.FeeStructures.Where(f => f.FeeCategoryId == usrcat)
。选择(f => f.FeeAmount).SingleOrDefault();

解决方案

取出分号:

< pre lang =c#> var fee = snw.FeeStructures.Where(f = > ; f .FeeCategoryId == usrcat).Select(f => f.FeeAmount).SingleOrDefault();

成为:

  var  fee = snw.FeeStructures.Where(f = >  f.FeeCategoryId == usrcat)。选择(f = > f.FeeAmount).SingleOrDefault(); 


将动态操作移到表达式树之外:

  var  userid = ViewBag.userid;  //  <  - 这是动态操作。 

var usrcat = snw.Users.Where(u = > u.UserID == userid)
。选择(u = > u.Category).SingleOrDefault();

var fee = snw.FeeStructures.Where(f => f.FeeCategoryId == usrcat)
。选择(f = > f.FeeAmount).SingleOrDefault();



NB:您使用 ViewBag 中的属性这一事实让我怀疑您是否在视图中执行数据访问代码。所有数据访问代码都属于控制器;视图应该只包含呈现响应的HTML标记所需的最小代码。


ViewBag 是动态的。因此,您需要将该值存储在某个变量中,然后对其执行操作。

  var  id = ViewBag 。用户身份; 
var usrcat = snw.Users.Where(u = > u.UserID == id).Select(u = > u.Category).SingleOrDefault();



详情请参阅ViewBag在这里 -

MSDN [ ^ ]

CodeProject [ ^ ]



-KR


How to resolve

Error:An expression tree may not contain a dynamic operation
Code:

var usrcat = snw.Users.Where(u => u.UserID == ViewBag.userid)
                  .Select(u =>u.Category).SingleOrDefault();

 var fee = snw.FeeStructures.Where(f =>f.FeeCategoryId == usrcat)
           .Select(f =>f.FeeAmount).SingleOrDefault();

解决方案

Take out the semicolon:

var fee = snw.FeeStructures.Where(f =>; f.FeeCategoryId == usrcat).Select(f =>f.FeeAmount).SingleOrDefault();

Becomes:

var fee = snw.FeeStructures.Where(f => f.FeeCategoryId == usrcat).Select(f =>f.FeeAmount).SingleOrDefault();


Move the dynamic operation outside of the expression tree:

var userid = ViewBag.userid; // <-- This is the dynamic operation.

var usrcat = snw.Users.Where(u => u.UserID == userid)
    .Select(u => u.Category).SingleOrDefault();
 
var fee = snw.FeeStructures.Where(f =>f.FeeCategoryId == usrcat)
    .Select(f => f.FeeAmount).SingleOrDefault();


NB: The fact that you're using properties from the ViewBag makes me suspicious that you're executing data access code in the view. All data access code belongs in the controller; the view should only contain the minimum code required to render the HTML markup for the response.


ViewBag is a dynamic. Hence you need to store that value in some variable then perform operation on it.

var id = ViewBag.userid;
var usrcat = snw.Users.Where(u => u.UserID == id).Select(u => u.Category).SingleOrDefault();


Refer more about ViewBag here-
MSDN[^]
CodeProject[^]

-KR


这篇关于如何解决以下错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆