【问题标题】:C# linq how to search data between two dateC# linq 如何在两个日期之间搜索数据
【发布时间】:2017-06-03 07:10:54
【问题描述】:

我正在开发基于 Windows 的应用程序,我想在两个日期之间搜索详细信息 所以我为此使用 linq 查询。

我的查询是:

mealsdbEntities objEntity = new mealsdbEntities();
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-CA");

DateTime OrderFromDate = DateTime.Parse(dtOrderFDate.Value.ToString("MM/dd/yyyy"));
DateTime OrderToDate = DateTime.Parse(dtOrderToDate.Value.ToString("MM/dd/yyyy"));
DateTime DelFromDate = DateTime.Parse(dtOrderDelFDate.Value.ToString("MM/dd/yyyy"));
DateTime DelToDate = DateTime.Parse(dtOrderDelTDate.Value.ToString("MM/dd/yyyy"));

var OrderList = (from ol in objEntity.orders
                 join cust_Con in objEntity.customermasters 
                      on ol.customer_id equals cust_Con.id
                 join cust_Cont in objEntity.customercontacts 
                      on ol.customer_id equals cust_Cont.customer_id
                 join oDish in objEntity.orderdishes 
                      on ol.id equals oDish.order_id
                 where cust_Con.company_name.Contains("" + txt_Cust_name.Text + "") 
                       && (EntityFunctions.TruncateTime(OrderFromDate) == OrderFromDate) 
                       //>= OrderFromDate) && (ol.createdon <= OrderToDate)) 
                       //&& (ol.deliverydate >= DelFromDate && ol.deliverydate <= DelToDate)
                 select new
                 {
                     ID = ol.id,
                     Title = ol.title,
                     Name = cust_Con.company_name,
                     Phone = cust_Cont.contact_phone,
                     // Item = disgcateg.dish_name,
                     DeliveryDate = ol.deliverydate,
                     DeliveryTime = ol.deliverytime,
                     Amount = ol.orderamount,
                     Status = ol.status
                 }).ToList();

但我收到一个错误:

System.Data.Entity.dll 中出现“System.Data.EntityCommandExecutionException”类型的未处理异常

附加信息:执行命令定义时出错。有关详细信息,请参阅内部异常。

谁能告诉我哪里错了?

【问题讨论】:

  • 如果 OrderFromDate 不是正好在午夜,您如何期望这是真的 (EntityFunctions.TruncateTime(OrderFromDate) == OrderFromDate)?无论如何,内在异常是什么?
  • @Steve System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-CA"); DateTime OrderFromDate = DateTime.Parse(dtOrderFDate.Value.ToString("MM/dd/yyyy")); DateTime OrderToDate = DateTime.Parse(dtOrderToDate.Value.ToString("MM/dd/yyyy")); DateTime DelFromDate = DateTime.Parse(dtOrderDelFDate.Value.ToString("MM/dd/yyyy")); DateTime DelToDate = DateTime.Parse(dtOrderDelTDate.Value.ToString("MM/dd/yyyy"));
  • "查看内部异常了解详情。" - 你也是?细节是什么?请把它们放在你的问题中。
  • 我是说外部异常已经告诉你接下来应该做什么:看看内部异常。 (我还说您当前将日期值格式化为字符串只是为了再次解析它,这是一个非常糟糕的主意。我不知道您为什么要这样做。)
  • 我放弃了——我不知道有多少种不同的方式可以说“看看内部异常”。

标签: c# mysql linq


【解决方案1】:

你可以使用 linq lambda

var startDate = new DateTime(2017, 1, 1);
var endDate = new DateTime(2017, 12, 31);

//this includes the last day
var endDatePlus = endDate.AddDays(1);

.Where(obj => obj.StartDate >= startDate && obj.EndDate < endDatePlus).ToList();

【讨论】:

  • 鉴于我们不知道 OP 的实际错误是什么,因此尚不清楚这是否会有所帮助。
【解决方案2】:

试试这个查询

var OrderList = (from ol in objEntity.orders
                 join cust_Con in objEntity.customermasters 
                 on ol.customer_id equals cust_Con.id
                 join cust_Cont in objEntity.customercontacts 
                 on ol.customer_id equals cust_Cont.customer_id
                 join oDish in objEntity.orderdishes 
                 on ol.id equals oDish.order_id
                 where cust_Con.company_name.Contains("" + txt_Cust_name.Text + "") 
                 && (OrderFromDate.Date == OrderFromDate.Date) 
                 //>= OrderFromDate) && (ol.createdon <= OrderToDate)) 
                 //&& (ol.deliverydate >= DelFromDate && ol.deliverydate <= DelToDate)
                 select new
                 {
                     ID = ol.id,
                     Title = ol.title,
                     Name = cust_Con.company_name,
                     Phone = cust_Cont.contact_phone,
                     // Item = disgcateg.dish_name,
                     DeliveryDate = ol.deliverydate,
                     DeliveryTime = ol.deliverytime,
                     Amount = ol.orderamount,
                     Status = ol.status
                 }).ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    相关资源
    最近更新 更多