【发布时间】:2019-02-13 16:40:59
【问题描述】:
在常规 SQL 中,我可以编写类似
的查询select * from geocodes where NAME='somename' and STATE='somestate'
但在 LINQ 中,我无法弄清楚如何做到这一点。我想为我正在使用 LINQ 执行的以下单个查询编写一些组合查询:
if (!String.IsNullOrEmpty(searchString))
{
switch (searchBy)
{
case "Name":
geocodes = geocodes.Where(s => s.NAME.Contains(searchString));
break;
case "Site":
geocodes = geocodes.Where(s => s.CFN_SITE.Contains(searchString));
break;
case "Address":
geocodes = geocodes.Where(s => s.STREET1.Contains(searchString));
break;
case "City":
geocodes = geocodes.Where(s => s.CITY.Contains(searchString));
break;
case "State":
geocodes = geocodes.Where(s => s.STATE_CODE.Contains(searchString));
break;
case "Acct":
geocodes = geocodes.Where(s => s.AccountNumber.Contains(searchString));
break;
}
}
【问题讨论】:
-
geocodes是IQueryable吗?您在此处显示的代码有什么问题? -
为什么不在条件中使用
&&?您是否尝试动态构建Where条件? -
如果您删除
switch并为每种情况使用if (shouldThisConditionBeUsed),您将获得一个动态生成的Where(..).Where(..)调用序列,相当于&& -
删除 switch 语句是一个有趣的提议。我可以试试!
标签: c# sql entity-framework linq