【问题标题】:Select Linq query Map to Entity选择 Linq 查询映射到实体
【发布时间】:2022-01-08 12:33:19
【问题描述】:

我有这段代码可以从数据库中获取所有 Meal,但考虑到优化,我只想获取所需的实体,而不是全部返回。

public async Task<IEnumerable<Meal>> GetAllMeal()
        {
            return await _dbSet.Include(x => x.MealPrices).ToListAsync();
        }

以上代码将从数据库中获取所有实体,包括我不需要的实体。 有没有办法在从 db 获取数据时映射我的 dto

【问题讨论】:

  • 您的数据库表已经是类,这就是您访问它们的方式。如果你想做另一个级别的映射,你可以使用 AutoMapper,或者如果你想拉几列,你可以使用EF Select 例如。 _dbSet.Include(x =&gt; x.MealPrices).Select(m =&gt; new{ object1 =m.Id, object2 = m.AnotherColumn}).ToListAsync();,您也可以映射到现有对象为_dbSet.Include(x =&gt; x.MealPrices).Select(m =&gt; new ExitingObject{ Id =m.Id, Column1 = m.AnotherColumn}).ToListAsync(); 这个stackoverflow.com/questions/19536064/… 也可以提供帮助

标签: c# asp.net .net asp.net-web-api


【解决方案1】:

我认为您正在寻找 Where 子句。例如,如果您的 Meal 模型有一个整数 Id 作为主键,您可以这样做:

    public async Task<Meal> GetMealById(int id)
        {
            return await _dbSet
              .Include(x => x.MealPrices)
              .Where(y => y.Id == id)
              .FirstOrDefault();
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多