当前位置: 首页 > 面试题库 >

带有组合键的表中的LINQ子选择

刘玉石
2023-03-14
问题内容

我在通过实体框架查询访问的数据库中有一个设置表。这些设置具有复合键:类别,组,名称,目标,已修改。这些设置显然还包含诸如值之类的非关键字段。

我将如何编写查询以提供相同设置(类别,组,名称,目标)中的最新设置?

更具体地说,我希望所有最新的设置实体(包括非关键字段)都与特定的类别,组,目标组合匹配。

例如:为我提供所有目标的所有最新设置,其中“类别”是“数据库”,而“组”是“超时”。

这可以分两步完成,初始查询返回与条件匹配的所有[Category,Group,Name,Target,Modified]键,然后循环查询每个键的设置,但这会产生很多数据库查询,造成开销。

如果要最大程度地减少框架执行的SQL数据库查询的数量,我该如何使用LINQ?


问题答案:
var query = from s in db.Settings
            group s by new
            {
              s.Category,
              s.Group,
              s.Name,
              s.Target,
            } into sg
            select new
            {
              Setting = sg.OrderByDescending(r => r.Modified).FirstOrDefault()
            };

编辑-如果要返回设置列表

 List<Setting> list = (from s in db.Settings
                       group s by new
                       {
                         s.Category,
                         s.Group,
                         s.Name,
                         s.Target,
                       } into sg
                       select sg.OrderByDescending(r => r.Modified).FirstOrDefault()
                      ).ToList();


 类似资料:
  • 问题内容: 我的印象是,除了选择列表中已经存在的任何值之外,您还可以键入一个组合框。但是,我似乎找不到有关如何执行此操作的信息。我需要添加一个属性以允许输入文本吗? 问题答案: 在此之前(请参见下面的注释),您将提供其他元素供人们输入自己的选项。 该机制 可在所有浏览器中使用,并且不需要JavaScript 。 如果选择了“其他”选项,您可以使用一点JavaScript来聪明地仅显示。 该元素旨在

  • 问题内容: 我必须与Hibernate合作,但我不确定如何解决此问题,我有2个具有1..n关系的表,如下所示: 如何使用Hibernate进行管理? 我不知道如何声明将包含主键一部分的外键。 我的数据库架构是从Hibernate模型生成的。 问题答案: 我找到了解决此问题的两种方法。 第一个是一种解决方法,没有第二个那么整洁。 将实体的主键定义为包含,和的复合键,首先将假定为主键的内容定义为唯一约

  • 问题内容: 我不是数据库专家,感觉好像缺少一些核心SQL知识来寻求该问题的解决方案。这是我可以解释的简短情况。 语境: 我有一个包含时间戳的用户事件记录的SQLite数据库表。可以通过时间戳和用户ID(即事件发生的时间以及事件的发生者)的组合来唯一地标识记录。我了解这种情况称为“复合主键”。该表看起来像这样(当然,删除了许多其他列): 问题: 我如何只包含 每个 用户的 最新 记录的结果集? __

  • 问题内容: 假设我有一个名为root的集合 我可以在一次调用中创建带有其子集合的文档吗? 我的意思是,如果我这样做: 那会在一瞬间创造出结构吗?老实说,我尝试了一下,doc1的标题为斜体,我认为仅适用于已删除的文档 问题答案: 您共享的代码不会创建实际的文档。它仅“保留”其中的文档ID ,然后在其下创建带有实际文档的集合。 在Firestore控制台中以斜体显示文档名称表示该位置没有物理文档,但是

  • 问题内容: 我使用spring数据休息作为基础。但是当实体具有复合主键时,我不知道如何通过提供主键来获得实体。 河类: RiverPK课程: RiverDAO类: 然后,我可以通过调用get http:// localhost:8080 / river / 获取河流数据,还可以通过调用post http:// localhost:8080 / river / {river json} 为db创建新

  • 问题内容: 在嵌套集模型中,将sql转换为linq对我来说是一个挑战。 上面的维基百科链接显示了如何按照sql语法列出给定节点的直接子级,并且当我使用LinqPad对其进行测试时,它可以很好地工作。 我一直坚持用LINQ来表达它,所以我很乐意向您学习。 问题答案: 这行得通(请注意,SQL中的区别是多余的): linqpad的完整样本: