使用动态LINQ库在运行时传入字段名称?

时间:2014-06-20 19:43:18

标签: c# asp.net-mvc dynamic-linq

这是一个在公司内部网上最多由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

1 个答案:

答案 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