代码之家  ›  专栏  ›  技术社区  ›  mshwf

从LINQ的任何方法返回任务?

  •  4
  • mshwf  · 技术社区  · 9 年前

    我有这个界面:

    public interface ISign
    {
       Task<bool> IsRegisteredCopy();
    }
    

    public class Sign : ISign
        {
            TabibContext context = new TabibContext();
            public Task<bool> IsRegisteredCopy()
            {
                return context.Doctors.Any();
            }
        }
    

    所以我需要从返回任务 Any

    2 回复  |  直到 9 年前
        1
  •  8
  •   DavidG    9 年前

    实体框架有多种 async extensions 您可以在 System.Data.Entity

    using System.Data.Entity;
    
    public Task<bool> IsRegisteredCopy()
    {
        return context.Doctors.AnyAsync();
    }
    
        2
  •  1
  •   fharreau    9 年前

    你有几种方法可以做到这一点。其中之一是马修·沃森的方式( return Task.Run(() => context.Doctors.Any()); ). 这被认为不是一个好的做法(看看Stephen Cleary在本文中的答案和链接) question

    这是另一种不需要您实际运行任务的方法。您可以返回任务,而无需执行以下任务:

    return Task.FromResult(context.Doctors.Any());
    

    注意:在实体框架的最新版本中,您有一个 AnyAsync

    public async Task<bool> IsRegisteredCopy()
    {
        return await context.Doctors.AnyAsync();
    }
    

    您需要使用以下方式添加此项: System.Data.Entity ;