![](/img/trans.png)
[英]Cannot implicitly convert type 'System.Collections.Generic.List<<anonymous type: System.DateTime timeStamp, double finalState, double consuption>>'
[英]Cannot implicitly convert type to System.Collections.Generic.List to System.DateTime
我需要為表添加 2 列(LastTaskCreatedDate 和 LastTaskUpdatedDate)。 我有那個 2coulums 的查詢,我只需要將該查詢調用到我的存儲庫 function 中。我的存儲庫 function 中已經有一個查詢,它獲取其中的其他列。 由於我無法在其中添加另一個查詢,因此我在其中創建了一個 function 並在其中添加了該查詢。 請查看屏幕截圖以獲得更清晰的信息。
enter image description here pic- 獲取這兩列的查詢。
這是在其中獲取表數據的 repo 函數,在這里我還需要添加這兩列
public WebStationResponse Filter(ProjectsFilter objFilter)
{
try
{
// Taking common project ids
var projectIds = _currentUser.AccessInfo.UserProjects.Select(up => up.ProjectID).ToList();
if (objFilter.ProjectID == null || objFilter.ProjectID.Count == 0)
{
objFilter.ProjectID = projectIds;
}
objFilter.ProjectID = objFilter.ProjectID.Intersect(projectIds).ToList();
objFilter.SetSqlPagingValues();
objFilter.CompanyID = _currentUser.AccessInfo.CompanyID;
objFilter.UserID = _currentUser.AccessInfo.UserID;
objFilter.ServerTimezone = DefaultRepository.ServerTimezoneOffset();
objFilter.UserTimezone = _currentUser.TimeZoneDetails.BaseUTCOffset;
string strQuery = Project.GetProjects(objFilter);
IList<ProjectDetails> lstProjectDetails = _dbContext.Database.Query<ProjectDetails>(strQuery,objFilter).ToList();
if (lstProjectDetails.Count == 0)
{
base.ResponseObject.ResponseId = (int)ResponseCode.RecordDoesnotExist;
return base.ResponseObject;
}
//
int intRecordCount = lstProjectDetails.Count;
if(objFilter.Pagination)
{
intRecordCount = _dbContext.Database.ExecuteScalar<int>(Common.RecordCount());
}
FillPermissions(ref lstProjectDetails);
FillProjectCompetencies(ref lstProjectDetails);
**FillLastDates(ref lstProjectDetails); **
base.FillResponseDetails(null,lstProjectDetails,null);
base.ResponseObject.RecordCount = intRecordCount;
}
catch (Exception ex)
{
base.FillResponseDetails(ex, null, null);
}
return base.ResponseObject;
}`your text`
這是我添加的 function,里面有查詢 GetLastTaskUpdateDates。
private void FillLastDates(ref IList<ProjectDetails> lstProjects)
{
if (lstProjects == null || lstProjects.Count == 0)
{
return;
}
//
var projectIds = lstProjects.Select(p => p.ProjectID).ToList();
string strQuery = Project.GetLastTaskUpdatedDates();
IList<ProjectDetails> lstDates = _dbContext.Database.Query<ProjectDetails>(strQuery, new { ProjectID = projectIds }).ToList();
//
ProjectDetails objProject = null;
for (int intIndex = 0; intIndex < lstProjects.Count; intIndex++)
{
objProject = lstProjects[intIndex];
lstProjects[intIndex].LastTaskCreated = lstDates.Where(c => c.ProjectID == objProject.ProjectID).ToList();
lstProjects[intIndex].LastTaskUpdated= lstDates.Where(c =>c.ProjectID == objProject.ProjectID).ToList();
}
}`your text`
如果我們查看最后兩行,我會收到此錯誤 - 無法將類型隱式轉換為 System.Collections.Generic.List 到 System.DateTime
需要幫助,!,請回復以澄清問題
在問題的細節中給出了一切
LastTaskCreate
和LastTaskUpdated
是 DateTime 並且您嘗試放置列表而不是 DateTimes,這是正常的。
您只能從您的列表中獲取一個日期。 我認為你正在尋找的是類似的東西(假設 lstDates 是一個日期列表):
var projectDates = lstDates.Where(c => c.ProjectID == objProject.ProjectID).OrderBy(e => e); // Ordered IEnumerable (it's a list but a bit different) of dates from the oldest to the newest
lstProjects[intIndex].LastTaskCreated = projectDates.First(); // Gives the first elem of the enumerable, should be the date of creation
lstProjects[intIndex].LastTaskUpdated = projectDates.Last(); // Gives the last elem of the enumerable, should be the last update date
我沒有放置 null 跳棋,但您可能想要添加一些以確保 projectDates 不為空。
如果 lstDates 是一個項目列表,代碼可能是這樣的:
var project = lstDates.FirstOrDefault(c => c.ProjectID == objProject.ProjectID);
if (project != null)
{
lstProjects[intIndex].LastTaskCreated = project.LastTaskCreated
lstProjects[intIndex].LastTaskUpdated = project.LastTaskUpdated
}
但這取決於 ProjectDetails 中的內容。
希望對您有所幫助
雖然我不完全理解您的場景中發生了什么,但該錯誤似乎具有相當的解釋性?
lstProjects[intIndex].LastTaskCreated
期望日期時間,而
lstDates.Where(c => c.ProjectID == objProject.ProjectID).ToList();
是 ProjectDetails 的列表。
我懷疑你想要這樣的東西:
lstProjects[intIndex].LastTaskCreated = lstDates.First(c => c.ProjectID == objProject.ProjectID).LastTaskCreated;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.