【发布时间】:2015-06-20 23:26:24
【问题描述】:
在我的 C# 代码中,我需要计算两个非空变量。我制定了一组 if-else if 语句,但在我看来,它看起来很难看,而且有点过于草率,即使它是正确的。
我查看了MSDN Library,只看到了基于单个变量的选择示例。
有没有更简洁、更简洁的方法来达到同样的效果?
更新:我填写了代码以提供更多上下文。再看这个,也许我可以直接根据参数来操作 linq 查询。但是,我提出的问题是我想关注的通用问题:选择,而不是选择后使用的代码。
public ActionResult Index(string searchBy, string orderBy, string orderDir)
{
var query = fca.GetResultsByFilter(searchBy);
if (orderBy == "Campus" && orderDir == "Asc")
{
query = query = query.OrderBy(s => s.Campus).ThenBy(s => s.Student_Name);
}
else if (orderBy == "Campus" && orderDir == "Desc")
{
query = query.OrderByDescending(s => s.Campus);
}
else if (orderBy == "Student Name" && orderDir == "Asc")
{
query = query = query.OrderBy(s => s.Student_Name);
}
else if (orderBy == "Student Name" && orderDir == "Desc")
{
query = query.OrderByDescending(s => s.Student_Name);
}
else if (orderBy == "Course Count" && orderDir == "Asc")
{
query = query.OrderBy(s => s.Course_Count);
}
else if (orderBy == "Course Count" && orderDir == "Desc")
{
query = query.OrderByDescending(s => s.Course_Count);
}
}
【问题讨论】:
-
/* ... code ... */是什么?你可以使用 LINQ 来执行这样的查询,假设这是代码中的内容。 -
我说的是一般意义上的。这些是通过表单提交发送到函数中的参数。我将修改我发布的问题以提供该上下文。
-
您可以首先创建一个像 If(check("campus","ASC"))... 这样的方法,然后将您的字符串添加到一个数组中并循环...for(i. ..) {if(check(strby[i],strdir[i])) }....如果您不喜欢两个数组,请为其创建一个特殊对象...