ASP.NET MVC,LINQ:计算日期差异

时间:2015-10-18 04:13:33

标签: c# asp.net-mvc linq

我正在尝试使用不同的参数过滤我的记录。但是当我必须过滤在30,60或90天内到期的物品的记录时,我得到一个例外。

这是我的代码:

 public IQueryable<Stock> FilterStocks(StockSearchVM searchModel)
    {
        var result = db.Stocks.AsQueryable();
        if (searchModel != null)
        {
            if (!string.IsNullOrWhiteSpace(searchModel.batch))
                result = result.Where(x => x.BatchNo == searchModel.batch);
            if (!string.IsNullOrEmpty(searchModel.name))
                result = result.Where(x => x.Item.Name.Contains(searchModel.name));
            if (!string.IsNullOrEmpty(searchModel.option))
            {
                if (searchModel.option == "BelowMin")
                {
                    result = result.Where(x => x.Qty < x.Item.AlertQty);
                }
                else if (searchModel.option == "UnSold")
                {
                    result = result.Where(x => x.Qty == x.InitialQty);
                }

                else if(searchModel.option == "90")
                {
                    result = result.Where(x => ( Convert.ToDateTime(x.ExpiryDate) - DateTime.Now).Days < 90);
                }
                else if (searchModel.option == "60")
                {
                    result = result.Where(x => (Convert.ToDateTime(x.ExpiryDate) - DateTime.Now).Days < 60);
                }
                else if (searchModel.option == "30")
                {
                    result = result.Where(x => (Convert.ToDateTime(x.ExpiryDate) - DateTime.Now).Days < 30);
                }
                else if (searchModel.option == "15")
                {
                    result = result.Where(x => (Convert.ToDateTime(x.ExpiryDate) - DateTime.Now).Days < 15);
                }
                else if (searchModel.option == "Expired")
                {
                    result = result.Where(x => (Convert.ToDateTime(x.ExpiryDate) - DateTime.Now).Days < 0);
                }
            }
            if ((searchModel.fromDate != null) || (searchModel.toDate != null))
            {
                if (searchModel.fromDate != null && searchModel.toDate == null)
                {
                    result = result.Where(x => x.ExpiryDate > searchModel.fromDate);
                }
                if (searchModel.toDate != null && searchModel.fromDate == null)
                {
                    result = result.Where(x => x.ExpiryDate < searchModel.toDate);
                }
                if (searchModel.toDate != null && searchModel.fromDate != null)
                {
                    result = result.Where(x => (x.ExpiryDate > searchModel.fromDate && x.ExpiryDate < searchModel.toDate));
                }
            }
        }
        return result;
    }

异常我得到:

  

LINQ to Entities无法识别方法&#39; System.DateTime   ToDateTime(System.Object的)&#39;方法,这个方法不能   翻译成商店表达。

用户界面 enter image description here

我也尝试使用: EntityFunctions.DiffDays ,但这也没有用。

result = result.Where(x => EntityFunctions.DiffDays(Convert.ToDateTime(x.ExpiryDate), DateTime.Now) < 60);

请帮帮我。

0 个答案:

没有答案