在使用. find()的查询中使用lambda表达式将数据分配给ViewModel

本文关键字:表达式 数据 ViewModel lambda 分配 查询 find | 更新日期: 2023-09-27 18:12:50

我正在写一个简单的MVC应用程序来学习ASP。净MVC。我一直在学习Pluralsight的课程,他们给了我很大的帮助。但是,对于LINQ,我还是有点摸不着头脑。

我有一段工作代码,我想知道它是否可以改进或更简洁。

需要做的事情:

  1. 根据给定的id(这是主键)从我的DB中提取数据
  2. 创建一个新的BoardViewModel(),只分配Title
  3. 返回一个BoardViewModel的实例,其Title属性设置为

目前,我有两种方法来做到这一点,它们都有效:

var board =
    db.Boards
        .Where(b => b.Id == id)
        .Select(b => new BoardViewModel {
            Title = b.Title
        })
        .First();

和方法二:

var board = 
    db.Boards
        .Find(id);
BoardViewModel model = new BoardViewModel();
model.Title = board.Title;

我最想知道的是,在我请求多个结果的查询中,我能够在选择扩展方法中使用lambda表达式将值分配给ViewModel,我可以在我使用查找方法的查询中使用类似的东西吗?

例如,看起来像这样:

var board = 
    db.Boards
        .Select(b => new BoardViewModel {
            Title = b.Title
        }
        .Find(id);

我很想知道还有哪些方法可以达到这个目的。

在使用. find()的查询中使用lambda表达式将数据分配给ViewModel

像这样?假设您期待一个具有给定id的记录。

var board = db.Boards.Select(b => new BoardViewModel
    {
        Title = b.Title
    }).FirstOrDefault(b => b.Id == id)