[英]c# winforms, using async and await in a Search function
我正在嘗試使用 async 搜索員工,並使用按鈕 function 等待,但我的代碼沒有按我的預期工作,並出現“需要類型為‘IQueryable’的接收器”之類的錯誤。 如果我想在 windows 表單中使用異步等待該怎么辦。 這是我的代碼:提前謝謝!
private async void btnSearch_Click(object sender, EventArgs e)
{
using(db)
{
var employees = db.Analys
.Where(x => x.Status == true)
.Select(a => new { a.UserId, a.FirstName, a.LastName, a.DOB, a.Department, a.DepartmentId })
.AsEnumerable()
.Select(b => new {
UserId = b.UserId,
FirstName = b.FirstName,
LastName = b.LastName,
Age = CalculateAge(b.DOB.ToString()),
Department = b.Department.DepartmenName,
});
var data = await employees.ToListAsync();
if (data!= null)
{
dgvEmployees.DataSource = data;
}
}
}
你能添加完整的錯誤文本嗎? 但是從您已經提供的代碼中,我假設您正在使用實體框架來訪問您的數據庫,因此AsEnumerable()
應該已經物化了從數據庫中獲取它的數據。 我會說你在這里不需要它,第一個Select
子句也是如此。 嘗試這樣的事情:
var employees = await db.Analys
.Where(x => x.Status == true)
.Select(b => new {
UserId = b.UserId,
FirstName = b.FirstName,
LastName = b.LastName,
Age = CalculateAge(b.DOB.ToString()),
Department = b.Department.DepartmenName,
})
.ToListAsync();
此外,此處不需要 null 檢查,因為 EF 應該返回空集合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.