C# c-筛选相关数据的日期范围下拉列表

C# c-筛选相关数据的日期范围下拉列表,c#,asp.net,asp.net-mvc,linq,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Linq,Asp.net Mvc 5,我必须创建一个下拉列表,允许用户选择一个日期范围,并根据他们的选择,显示所有日期介于该范围之间的记录 我知道如何查询下面的一个范围代码片段,但如何查询,使下拉列表仅填充过去7天、过去15天、过去30天、过去60天和所有事务的选项,然后根据选择显示相应的事务 另外,如果知道如何使用一个名为Custom的选项,允许用户输入自己的日期范围也会很好,但这不是一个优先事项 下面我将查询和显示过去七天内的交易,但这显然不是我想要的 public SelectList GetDateRanges()

我必须创建一个下拉列表,允许用户选择一个日期范围,并根据他们的选择,显示所有日期介于该范围之间的记录

我知道如何查询下面的一个范围代码片段,但如何查询,使下拉列表仅填充过去7天、过去15天、过去30天、过去60天和所有事务的选项,然后根据选择显示相应的事务

另外,如果知道如何使用一个名为Custom的选项,允许用户输入自己的日期范围也会很好,但这不是一个优先事项

下面我将查询和显示过去七天内的交易,但这显然不是我想要的

public SelectList GetDateRanges()
    {
        DateTime today = DateTime.Today;
        DateTime minusSeven = today.AddDays(-7);
        DateTime minusFifteen = today.AddDays(-15);
        DateTime minusThirty = today.AddDays(-30);
        DateTime minusSixty = today.AddDays(-60);

        var query = from t in db.Transactions
                    where t.TransactionDate >= minusSeven
                    select t;

我的想法是,我可能会创建一个静态列表,但我不知道如何根据用户在该列表中的选择进行查询。

将时段传递回函数

public SelectList GetDateRanges(int daysBack)
{
    var oldestDate = (DateTime.Today).AddDays(daysBack * -1);

    var query = from t in db.Transactions
                where t.TransactionDate >= oldestDate
                select t;
    ...
}
并在选择控件中预先设置daysBack值

<select name="daysBack">
    <option value="7">Last 7 days</option>
    <option value="15">Last 15 days</option>
</select>
如果您最终想让用户完全控制,那么就通过两个日期界限。其他每个选项都只是这个查询的一个子集

public SelectList GetDateRanges(DateTime startDate, DateTime endDate)
{
    var query = from t in db.Transactions
                where t.TransactionDate >= startDate &&
                      t.TransactionDate <= endDate
                select t;
    ...
}

然后,您可以使用客户端插件来提供这两个日期。

将句点传递到函数中,然后您可以查询任何范围。查看预定义的范围。我以前看过这个链接,但我正在使用这个下拉菜单来搜索功能,这需要在我的控制器中。或者预定义的范围是否会以某种方式解决查询?您可以允许您的查询更容易接受范围。这将使它更通用,如果您决定更改预定义的范围,则无需修改它。这意味着您将修复UI上的范围,并可能编写一个类来枚举这些范围DateRange.Last7Days.Thank。非常感谢-这绝对是我所寻找的一个很好的部分。你能解释一下你所说的选择控制和相关代码是什么意思吗?这与视图有关吗?HTML视图上的控件