这是一个在公司内部网上最多由4个人使用的小应用程序,我是C#和.NET的新手,所以解决方案不一定非常宏大。
我正在尝试为简单的.NET CRUD应用创建一个搜索字段,用户可以在其中选择要搜索的类别(例如“应用程序名称”或“管理器”),然后选择一个可以过滤结果的文本框基于该字段名称。下拉菜单中的项目是类字段成员,我希望所有这些项都可以搜索。我使用Dynamic Linq Library创建了一个字符串,以便我可以在运行时传递列名,但由于某种原因,我的查询没有返回任何结果。
这是我当前的查询
dr_details = dr_details.Where("@0 == @1",searchType, searchString);
例如,searchType& searchString从查询字符串中获取它们的值(我们分别说"经理"和#34; Joe"),以便查询应该替换为:
dr_details = dr_details.Where("Manager == Joe");
这给了我没有结果。但是,如果我将字符串"Manager == Joe"
硬编码到查询中运行正常。
有什么建议吗?如果足够长的话,这个问题会让我把头发拉出来! :P
答案 0 :(得分:-1)
如果你不想要,你不一定要使用动态linq。
尝试这样的事情:
var query = myList.AsQueryable();
switch(searchType)
{
case "Manger":
query = query.where(x=> x.Manager == searchString);
break;
case "....":
break;
default:
// No search type match in string... an exception? your call
break;
}
我觉得这更直观,因为它“构建”了查询...
编辑:
如果这太痛苦了,请尝试following this post