这种情况:
1)如果用户选择新闻组,则在文本框中输入新闻标题 该方法将在News中搜索,其中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来对我说,如果if声明您要消除诚信和一致性。
能否请您告诉我如何以更好的方式编写此代码?
谢谢
答案 0 :(得分:0)
是否需要对新闻项进行分组?如果您的新闻项在数据库中没有分配的组,则传递-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);
}