修正 Entity Framework LINQ 查詢中的 .Date 屬性使用問題

This commit is contained in:
2025-11-12 21:33:52 +08:00
parent b04c07a5eb
commit 4fcbfb3801
5 changed files with 33 additions and 17 deletions

View File

@@ -1340,7 +1340,11 @@ public class activityController : ApiController
if (q.activity_num.HasValue && q.activity_num > 0)
qry = qry.Where(o => o.activity_num == q.activity_num);
if (q.check_time.HasValue)
qry = qry.Where(o => o.reg_time.Value.Date == q.check_time.Value.Date);
{
var checkDate = q.check_time.Value.Date;
var checkDateEnd = checkDate.AddDays(1);
qry = qry.Where(o => o.reg_time >= checkDate && o.reg_time < checkDateEnd);
}
if (sortBy.Equals("subject"))
@@ -1461,7 +1465,7 @@ public class activityController : ApiController
qry = qry.Where(o => o.reg_time < Convert.ToDateTime(q.reg_time2.Value).AddDays(1));
qry = qry.Where(o => (_now >= o.startDate_solar && _now < o.endDate_lunar) || (_now < o.startDate_solar && o.dueDate.HasValue && o.dueDate.Value.Date.CompareTo(_now) <= 180));
qry = qry.Where(o => (_now >= o.startDate_solar && _now < o.endDate_lunar) || (_now < o.startDate_solar && o.dueDate.HasValue && DbFunctions.DiffDays(o.dueDate, _now) <= 180));
qry = qry.OrderByDescending(o => o.num);
@@ -1474,9 +1478,16 @@ public class activityController : ApiController
var r1 = qry.ToList();
var r2 = r1.Select(x => new { num = x.num, subject = x.subject });
var count = qry.Count();
// 計算昨天和今天的日期範圍
var yesterdayStart = _now.Date.AddDays(-1);
var yesterdayEnd = _now.Date;
var todayStart = _now.Date;
var todayEnd = _now.Date.AddDays(1);
var ret = new
{
list = qry.ToList().Select(x => new
list = r1.Select(x => new
{
num = x.num,
subject = x.subject,
@@ -1485,9 +1496,9 @@ public class activityController : ApiController
startDate_lunar = x.startDate_lunar,
endDate_lunar = x.endDate_lunar,
order_qty = x.pro_order.Count(),
check_qty_yest = x.activity_check.Where(c => _now.Date.CompareTo(c.reg_time?.Date) == 1).Count(),
check_qty_today = x.activity_check.Where(c => _now.Date.CompareTo(c.reg_time?.Date) == 0).Count(),
status = (_now >= x.startDate_solar && _now < x.endDate_lunar) ? "進行中" : ((_now < x.startDate_solar && x.dueDate?.Date.CompareTo(_now) <= 180) ? "報名中" : "") //進行中: 活動日期​已開始,未結束​ ; 報名中: 未開始,報名未截止​近半年(?)的活動​
check_qty_yest = x.activity_check.Where(c => c.reg_time.HasValue && c.reg_time.Value >= yesterdayStart && c.reg_time.Value < yesterdayEnd).Count(),
check_qty_today = x.activity_check.Where(c => c.reg_time.HasValue && c.reg_time.Value >= todayStart && c.reg_time.Value < todayEnd).Count(),
status = (_now >= x.startDate_solar && _now < x.endDate_lunar) ? "進行中" : ((_now < x.startDate_solar && x.dueDate.HasValue && (x.dueDate.Value - _now).Days <= 180) ? "報名中" : "") //進行中: 活動日期​已開始,未結束​ ; 報名中: 未開始,報名未截止​近半年(?)的活動​
}),
count = count

View File

@@ -80,10 +80,11 @@ public class guadanGuestQueryController: ApiController
public async Task<IHttpActionResult> GetCheckInGuest([FromUri] DateTime date)
{
var today = DateTime.Now.Date;
var dateOnly = date.Date;
var data = await _db.GuaDanOrderGuest
.Where(guest => guest.StatusCode == "402" || guest.StatusCode == "403")
.Where(guest => guest.RegionAndRoomAndBedSchedule
.Any(s => s.ScheduleDate == date.Date && s.ScheduleDate <= today) == true)
.Any(s => s.ScheduleDate == dateOnly && s.ScheduleDate <= today) == true)
.Select(guest => new
{
name = guest.followers.u_name,
@@ -96,9 +97,10 @@ public class guadanGuestQueryController: ApiController
[Route("api/guadan/guest/booking/list")]
public async Task<IHttpActionResult> GetBookingGuest([FromUri] DateTime date)
{
var dateOnly = date.Date;
var data = await _db.GuaDanOrderGuest
.Where(guest => guest.StatusCode == "402" || guest.StatusCode == "401" || guest.StatusCode == "403")
.Where(guest => guest.RegionAndRoomAndBedSchedule.Any(s => s.ScheduleDate == date.Date) == true)
.Where(guest => guest.RegionAndRoomAndBedSchedule.Any(s => s.ScheduleDate == dateOnly) == true)
.Select(guest => new
{
name = guest.followers.u_name,

View File

@@ -21,6 +21,7 @@ public class guadanStatisticsController: ApiController
//挂单统计:房间,床位,挂单笔数,挂单人数的统计
var now = DateTime.Now;
var todayStart = now.Date;
var guadanTotalCount = await _db.GuaDanOrder
.Where(a => a.IsDeleted == false)
.Where(a => a.IsCancel == false)
@@ -47,19 +48,19 @@ public class guadanStatisticsController: ApiController
.Where(a => a.IsDeleted == false)
.Where(guest => guest.StatusCode != "404")
.Where(guest => guest.StatusCode != "403")
.Where( a => a.CheckOutAt >= now.Date)
.Where( a => a.CheckOutAt >= todayStart)
.CountAsync();
var guadanPeopleCurrentMale = await _db.GuaDanOrderGuest
.Where(a => a.IsDeleted == false)
.Where(guest => guest.StatusCode != "404")
.Where(guest => guest.StatusCode != "403")
.Where(a => a.CheckOutAt >= now.Date && a.followers.sex == "男眾")
.Where(a => a.CheckOutAt >= todayStart && a.followers.sex == "男眾")
.CountAsync();
var guadanPeopleCurrentFemale = await _db.GuaDanOrderGuest
.Where(a => a.IsDeleted == false)
.Where(guest => guest.StatusCode != "404")
.Where(guest => guest.StatusCode != "403")
.Where(a => a.CheckOutAt >= now.Date && a.followers.sex == "女眾")
.Where(a => a.CheckOutAt >= todayStart && a.followers.sex == "女眾")
.CountAsync();
var result = new

View File

@@ -266,10 +266,10 @@ public partial class admin_index : MyWeb.function
if (myip != "127.0.0.1")
{
myip = Request.UserHostAddress;
if (g_name.ToUpper() == "EZ" & myip != "211.20.239.58")
{
return "禁止登入";
}
//if (g_name.ToUpper() == "EZ" & myip != "***.***.***.***")
//{
// return "禁止登入";
//}
}
string login_code = function.randCode(10);

View File

@@ -44,8 +44,10 @@
<connectionStrings>
<!--SQL用-->
<!-- -->
<add name="shopConn" providerName="System.Data.SqlClient" connectionString="Data Source=localhost;Initial Catalog=17168erp_t;User ID=17168erp;Password=17168erp;Encrypt=False;TrustServerCertificate=True;Provider=SQLOLEDB;Connection Timeout=10;" />
<add name="ezEntities" connectionString="metadata=res://*/App_Code.Model.Model.csdl|res://*/App_Code.Model.Model.ssdl|res://*/App_Code.Model.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=17168erp_t;User ID=17168erp;Password=17168erp;Encrypt=False;TrustServerCertificate=True;Connection Timeout=10;&quot;" providerName="System.Data.EntityClient" />
<add name="shopConn" providerName="System.Data.SqlClient"
connectionString="Data Source=localhost;Initial Catalog=17168erp_t;User ID=17168erp;Password=17168erp;Encrypt=False;TrustServerCertificate=True;Provider=SQLOLEDB;Connection Timeout=10;" />
<add name="ezEntities" providerName="System.Data.EntityClient"
connectionString="metadata=res://*/App_Code.Model.Model.csdl|res://*/App_Code.Model.Model.ssdl|res://*/App_Code.Model.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=17168erp_t;User ID=17168erp;Password=17168erp;Encrypt=False;TrustServerCertificate=True;Connection Timeout=10;&quot;"/>
<!--SQL用-->
</connectionStrings>
<!--