public async Task<ResultData<HomePlannedRecieptInfo>> GetHomePlannedReciepts(HomePlannedRecieptQuery query)
{
var datelist = new List<DateTime>()。
var date = DateTime.Now;
for (var i = 0; i <= 6; i )
{
datelist.Add(date.AddDays(i))。
}
datelist.Add(date);
IQueryable<HomePlannedRecieptInfo> result = context.HomePlannedRecieptInfos.Where(t=>t.Date >= DateTime.Today)。
foreach (var item in result.ToList()
{
item.DayDiff = (item.Date.Date - DateTime.Now.Date).TotalDays.ToString()。
}
var offset = (query.PageNumber - 1) * query.PageSize;
var psize = query.PageSize;
var countQuery = await result.CountAsync()。
var data = result.OrderByDescending(c => c.Date);
return new ResultData< HomePlannedRecieptInfo>
{
CurrentPage = query.PageNumber,
TotalItems = countQuery,
PageSize = query.PageSize,
資料 = data.ToList()
};
當我執行foreach中的代碼時,我可以在item.dayDiff中看到天數,但當資料回傳時我看不到它。誰能幫幫我嗎?
uj5u.com熱心網友回復:
你正在呼叫 result.ToList(),但你只是在 foreach 回圈中迭代了它,你實際上沒有把它存盤在任何地方。這應該可以解決這個問題:
var resultAsList = result.ToList()。
foreach (var item in resultAsList)
{
item.DayDiff = (item.Date.Date - DateTime.Now.Date).TotalDays.ToString()。
}
...
var data = resultAsList.OrderByDescending(c => c.Date)。
uj5u.com熱心網友回復:
這是因為每次你具體化一個IQueryable時,資料都是從資料庫中獲取的。你在你的代碼中物化了兩次。一次在foreach中,一次在data.ToList()中回傳資料時。因此,你有兩個具有不同專案的串列。由于你正在改變第一個串列中的資料,第二個串列將不會收到這些資料。
你有兩種可能:
- 在 foreach 之前呼叫 ToList,并使用相同的物化串列來更改屬性,并回傳相同的串列
- 改變 get accepts 的方式。
- 將DayDiff的獲取器改為以下內容
public string DayDiff {get => (Date.Date - DateTime.Now.Date).TotalDays.ToString();}使用這個方法的好處是,如果你在代碼的其他位置查詢資料,你不必提醒你設定DayDiff 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/322490.html
標籤:
