【发布时间】:2015-01-11 17:42:16
【问题描述】:
我正在尝试使用 System.Linq.Dynamic 程序集创建动态 LINQ 表达式。我有一个列列表,我想搜索用户提交的特定值。例如
如果用户在搜索中输入 5,那么它将搜索为该值指定的列。当我将始终被视为字符串的搜索文本与具有不同类型的列进行比较时,就会出现我的问题。我读过的所有示例列的类型都是事先知道的并且使用了正确的类型,看来我需要能够将搜索字符串解析为正确的类型或 .ToString() 数据库值,但是这会中断为空。请参阅下面的 sn-p 代码:
public IEnumerable<Product> GetProducts(string searchText, List<string> searchFields)
{
var products = dbSet.Where(p => !p.IsDisabled); //dbSet is a global variable linking to the products table
foreach (var searchField in searchFields)
{
products = products.Where(searchField + ".ToString() == @0", searchText);
}
return products.OrderBy(p => p.ASPNo);
}
提前感谢您提供正确方向的任何帮助/指示
【问题讨论】:
-
你可以试试
"Convert.ToString("+searchField+")"
标签: linq entity-framework dynamic dynamic-linq