من اشتباه نکردم دوست من
شما منظور من رو صحیح متوجه نشدید
کدی که دوستمون در سوالشون مطرج کردند غلط نیست جوابگو هست ولی سربار دارد
و در جواب سوال دوم شما BarnamenevisJavan
دقیقا من جواب شما رو در پست قبلی دادم
هر زمان یک متدی دارید که درون اون فقط یک لیست و یا بهتر بگم یک کوئری tolistAsync دارید نیاز به تعریف async در تعریف امضای متد و await در بدنه کد نیست
مثل تابع اولی خودتون
مثلا اگر تابعی دارید بدینصورت
public async Task GetAllUserAsync()
{
var list=await dbcontext.person.ToListAsync();
var list2=await dbcontext.persondetails.ToListAsync();
foreach(var p in list)
var li=list2.first(x=> x.id=p.id);
}
چون در این تابع از جدول person واکشی کردیم وبلافاصله به نتیجه اون در همین متد نیاز داریم مجبوریم از async و await در این متد استفاده کنیم کامپایلر هم به ما هشدار میدهد
برای صدا زدن بدینصورت عمل نکنید
GetAllUserAsync.waite()
صحیحش بدینصورت هست
await GetAllUserAsync();
ولی اگر یک متد داریم که فقط یک tolist دارد و در سایر متدها ی دیگر قابل استفاده میکنیم جهت سربار کمتر امضای متد را بدون async و await را هم از بدنه کد حذف کنید
و هنگام صدا زدن کافیه قبل از متد await را بکار ببریم
Task List<Person>Get()
{
return dbcontext.persons.ToListAsync();
}
async Task CallMetod()
{
var i=await Get()
}