Linq不包含’Where’的定义
我正在尝试通过if语句调整我的查询,如下所示:
IQueryable articles = null; if (User.IsInRole("Admin")) { articles = from s in db.Articles select s; } if (User.IsInRole("Educator")) { articles = from s in db.Articles where s.createdBy == WebSecurity.CurrentUserName select s; }
这似乎没有给我任何错误。 但是,当我尝试使用where子句进行更多过滤时,它无法识别该术语。 我理解IQuerable不支持它,但有没有办法将“articles”设置为null,然后用if语句设置它?
if (!String.IsNullOrEmpty(searchString)) { articles = articles.Where(s => s.title.ToUpper().Contains(searchString.ToUpper()) || s.content.ToUpper().Contains(searchString.ToUpper())); } switch (sortOrder) { case "name_desc": articles = articles.OrderByDescending(s => s.title); break; case "Date": articles = articles.OrderBy(s => s.dateCreated); break; case "date_desc": articles = articles.OrderByDescending(s => s.dateCreated); break; case "rating_desc": articles = articles.OrderByDescending(s => s.finalReview); break; case "Rating": articles = articles.OrderBy(s => s.finalReview); break; case "Views": articles = articles.OrderBy(s=>s.numViews); break; case "views_desc": articles = articles.OrderByDescending(s => s.numViews); break; case "Educators": articles = articles.OrderBy(s => s.educatorCRUD); break; case "educators_desc": articles = articles.OrderByDescending(s => s.educatorCRUD); break; default: articles = articles.OrderBy(s => s.title); break; }
我知道我可以在一个大的if语句中执行此操作if(User.IsInRole(“Admin”))然后执行所有代码然后将相同的代码复制并粘贴到不同的if语句中(if(user.IsInRole(“Educator)),但我认为这种冗余且非常糟糕的编码实践。
干杯。
您的articles
变量使用非generics类型IQueryable
,它确实支持非常少。
你想要IQueryable
来获得合适的
。 例如:
IQueryable articles; // Initialize as before
我个人会改变你如何初始化它:
上述就是C#学习教程:Linq不包含’Where’的定义分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
IQueryable articles = db.Articles; if (User.IsInRole("Admin")) { // No change... } else if (User.IsInRole("Educator")) { articles = articles.Where(s => s.createdBy == WebSecurity.CurrentUserName); } else { // Throw an exception? What do you want to happen if they're neither an // educator nor an administrator? }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/951337.html