c# - 如果用户不选择任何组,则搜索所有数据的更好方法
问题描述
这是这种情况:
1)如果用户选择一个新闻组,然后在文本框中输入新闻的标题,该方法将在新闻中搜索 GroupId=blahblahblah
2)如果用户没有选择任何组,该方法将搜索所有新闻
public List<tbl> SerchNewsByTitle(string title, int groupid)
{
try
{
var result = from n in tbl
where n.GroupId == groupid
select n;
if (groupid== -1)
{
result = from n in tbl selec n;
}
return result.ToList();
}
catch (Exception e)
{
AddExceptionData(e);
return null;
}
}
如您所见,如果用户未选择组,我将通过 -1
有人通过传递 -1 对我说,如果声明你消除了完整性和一致性。
你能告诉我如何以更好的方式编写这段代码吗?
谢谢
解决方案
是否需要对新闻进行分组?如果您的数据库中有一个没有指定组的新闻项目,则传递一个 -1 值来指示搜索全部可能会造成混淆。有人可以将其解释为“搜索所有新闻”或“搜索所有没有指定组的新闻”
此外,就完整性而言,有一种观点认为整数 ID 应该支持完整的可用值集,并且排除负数将是不一致的。如果后备数据库列是 int 类型,则负值将是有效的。然而,在实践中,这种观点是一个有争议的话题,有些人同意,有些人不同意。
我至少会创建两个方法,这样使用这些方法的任何代码都必须对底层数据库了解得更少。这样一来,它就不必知道任何神奇的数字来搜索全部与搜索特定组。
public List<tbl> SearchNewsByTitle(string title, int groupid)
{
try
{
var result = from n in tbl
where (n.GroupId == (groupid < 0 ? n.GroupId : groupId))
select n;
return result.ToList();
}
catch (Exception e)
{
AddExceptionData(e);
return null;
}
}
public List<tbl> SearchNewsByTitle(string title)
{
return SearchNewsByTitle(title, -1);
}
推荐阅读
- javascript - 使用 object.keys 和 foreach 显示数据时出错,使用 document get element by id
- c - 试图在 C 中创建一棵 Huffman 树,但它一直在说 heap-buffer-overflow
- r - 如何在 R 中对 rowMeans 进行条件计算?
- javascript - 请求数据时从对象解析属性
- java - JDBC API DataBaseMetadata.getTables 在 Oracle 18c 中失败
- mysql - 在 MySQL 中获取状态更改时的开始和结束时间
- c# - 一次调用 IS 算子覆盖所有接口子类型
- html - 如何在模态中创建列?
- scheme - 如何在方案中将两个多项式列表相乘
- tensorflow-serving - 给定一个张量和一个图,TF Serving 如何知道如何处理它们