繁体   English   中英

C#Linq如何在两个日期之间搜索数据

[英]C# linq how to search data between two date

我正在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'的未处理异常

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

谁能告诉我我哪里错了?

您可以使用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();

试试这个查询

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM