【发布时间】:2014-05-12 20:42:10
【问题描述】:
我是 C# 新手,这是我的问题。 我已经让用户从下拉列表中选择他们的搜索选项,并且我在 search 中将 Searchterm 和 SearchBy 作为字符串参数传递> 方法。
(Get() 方法返回 DbSet 个项目)
public virtual IQueryable<Item> Search(string searchTerm, string searchBy)
{
if (searchBy == "Name")
{
var item = Get().Where(i => i.Name.Contains(searchTerm));
return item;
}
if (searchBy == "Category")
{
var item = Get().Where(i => i.Category.Contains(searchTerm));
return item;
}
}
名称、类别是项目模型的属性。 我想要的是直接使用 searchBy 参数而不是检查 如果 (searchBy=="Name")。 应该和这个差不多。
var item = Get().Where(i => i.searchBy.Contains(searchTerm));
有可能吗?请指教!
【问题讨论】:
-
为什么如果这里需要,在块代码中是一样的,是吧?
-
看来这里的逻辑不好是问题所在。
-
您确定在第二个 if 语句中
where子句是i=>i.Name.Contains(searchTerm)而不是i=>i.Category.Contains(searchTerm)吗? -
这是可能的,但由于语言的工作方式,它不是很简单。您必须深入研究使用反射和/或表达式树,这对于初学者来说是相当棘手的事情。
标签: c# asp.net-mvc entity-framework