簡體   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