如何执行find()并在找到的实体之前和之后返回实体?

布雷特

我正在尝试执行查询,在该查询中我返回SQL表中记录之一的对象在这种情况下,它是一个DbImageModel对象(请参见下面的代码)。以下代码非常适合根据查询条件返回单个实体:

s.ImageTag == imageTag

但是我还需要找到一种方法,也可以当前找到的实体之前之后返回实体或者至少是之前之后实体imageTag这可能吗?

我的代码如下:

using (UsersDbContext ctx = new UsersDbContext())
{
    try
    {
        DbImageModel image = ctx.Images.Include(i => i.Application)
              .OrderBy(c => c.ImageId)
              .FirstOrDefault(s => s.ImageTag == imageTag);
        // Do something with image

    }
    catch (Exception ex)
    {
        throw new NotImplementedException();  // For debugging
    }
}

我还应该提到,我的数据库关系是将多个DbImageModel对象设置为一个DbApplicationModelDbApplicationModel单个DbUserModel对象有很多对象。

对于开发人员来说,这听起来似乎不应该是一个新问题,但是我还没有找到任何讨论实现此方法的参考。

更新:

我添加了一个订单。我的问题仍然适用。

脱衣战士

如果ImageId始终为增量,则可以在发现的ImageId的设置范围内选择项目:

    DbImageModel images = 
        from i in ctx.Images.Include(i => i.Application)
        let match = ctx.Images.FirstOrDefault(s => s.ImageTag == imageTag)
        where i.ImageId < match.ImageId + 1 &&
            i.ImageId > match.ImageId - 1
        order by i.ImageId
        select i;

但是,我想您不能总是假设情况确实如此。例如,如果您曾经允许删除图像,则将存在间隙。您最好的选择是使用多次往返。首先使用您提供的代码查找图像,然后:

DbImageModel imageAfter = ctx.Images.Include(i => i.Application)
    .OrderBy(i => i.ImageId)
    .FirstOrDefault(i => i.ImageId > image.ImageId);
DbImageModel imageBefore = ctx.Images.Include(i => i.Application)
    .OrderByDescending(i => i.ImageId)
    .FirstOrDefault(i => i.ImageId < image.ImageId);

您可能会提出某种复杂的查询以一次往返生成所有这些查询,但是其复杂性最终可能会使它花费的时间比这三个往返的总和还长。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何执行find()并在找到的实体之前和之后返回实体?

来自分类Dev

实体框架在获取数据之前或之后执行lambda表达式吗?

来自分类Dev

实体框架在获取数据之前或之后执行lambda表达式吗?

来自分类Dev

实体框架-WCF-返回JSON如何执行此操作?

来自分类Dev

在实体的父级创建之后但在将其放入数据存储区之前,如何添加/更改该实体的父级?

来自分类Dev

如何在值之前和之后找到索引?

来自分类Dev

如何使实体框架异步执行

来自分类Dev

如何返回实体ID的并集

来自分类Dev

在保存到实体框架上之前如何分离实体

来自分类Dev

从Spring / MongoDB findAndModify返回旧实体和新实体

来自分类Dev

编写ndb查询以返回实体密钥和实体

来自分类Dev

如何在 SaveChanges 之前搜索实体

来自分类Dev

在迭代和执行PCA之后如何正确返回数组

来自分类Dev

在EntityCollection(Of TEntity)之后找不到实体。添加执行

来自分类Dev

实体框架:执行存储过程以返回不同的列和列数据类型

来自分类Dev

如何区分模型和实体?

来自分类Dev

在代码块之前和之后执行方法

来自分类Dev

EF DbSet.Find()返回分离的实体

来自分类Dev

如何找到所有可能的实体

来自分类Dev

如何找到所有可能的实体

来自分类Dev

JavaScript:如何获取用户选择,并在选择之前和之后插入标签?

来自分类Dev

实体框架:在 SaveChanges 返回的对象没有孩子之后

来自分类Dev

Linq从实体集合中删除未提交的实体-您如何找到合适的实体?

来自分类Dev

如何在文本文件中找到一个短语并在它之前/之后删除?

来自分类Dev

如何在实体上执行版本更新?

来自分类Dev

实体配置:如何正确配置类和实体配置

来自分类Dev

如何在php中的字符串中的单词之前和之后找到字符

来自分类Dev

如何使用grep在*之前和之后找到上下文行?

来自分类Dev

实体框架查询 - 如何返回所需的结果

Related 相关文章

  1. 1

    如何执行find()并在找到的实体之前和之后返回实体?

  2. 2

    实体框架在获取数据之前或之后执行lambda表达式吗?

  3. 3

    实体框架在获取数据之前或之后执行lambda表达式吗?

  4. 4

    实体框架-WCF-返回JSON如何执行此操作?

  5. 5

    在实体的父级创建之后但在将其放入数据存储区之前,如何添加/更改该实体的父级?

  6. 6

    如何在值之前和之后找到索引?

  7. 7

    如何使实体框架异步执行

  8. 8

    如何返回实体ID的并集

  9. 9

    在保存到实体框架上之前如何分离实体

  10. 10

    从Spring / MongoDB findAndModify返回旧实体和新实体

  11. 11

    编写ndb查询以返回实体密钥和实体

  12. 12

    如何在 SaveChanges 之前搜索实体

  13. 13

    在迭代和执行PCA之后如何正确返回数组

  14. 14

    在EntityCollection(Of TEntity)之后找不到实体。添加执行

  15. 15

    实体框架:执行存储过程以返回不同的列和列数据类型

  16. 16

    如何区分模型和实体?

  17. 17

    在代码块之前和之后执行方法

  18. 18

    EF DbSet.Find()返回分离的实体

  19. 19

    如何找到所有可能的实体

  20. 20

    如何找到所有可能的实体

  21. 21

    JavaScript:如何获取用户选择,并在选择之前和之后插入标签?

  22. 22

    实体框架:在 SaveChanges 返回的对象没有孩子之后

  23. 23

    Linq从实体集合中删除未提交的实体-您如何找到合适的实体?

  24. 24

    如何在文本文件中找到一个短语并在它之前/之后删除?

  25. 25

    如何在实体上执行版本更新?

  26. 26

    实体配置:如何正确配置类和实体配置

  27. 27

    如何在php中的字符串中的单词之前和之后找到字符

  28. 28

    如何使用grep在*之前和之后找到上下文行?

  29. 29

    实体框架查询 - 如何返回所需的结果

热门标签

归档