【问题标题】:Get the last 100 inserted records in sql server获取sql server中最后插入的100条记录
【发布时间】:2012-11-04 07:17:10
【问题描述】:

我想检索 sql server 2008 中最后插入的 100 条记录。

请更正我的代码。 表 testContext.testDetailRecords 中的 pkey 是一个标识列。

var pkeys = (from tests in testContext.testDetailRecords
                         where tests.Pkey > (select max(tests.Pkey)-100 from testContext.testDetailRecords))
                                select tests.Pkey).ToList();

【问题讨论】:

    标签: c# sql-server linq tsql


    【解决方案1】:

    怎么样

    var pkeys = testContext.testDetailRecords
                     .OrderByDescending(x => x.PKey)
                     .Take(100)
                     .Select(x => x.PKey);
    

    这应该大致翻译成 SQL

    SELECT TOP 100 PKey
    FROM testDetailRecords
    ORDER BY PKey DESC
    

    【讨论】:

    • 还有一个问题,我可以把 .Select(x=>x.Pkey) 改成 .ToList()
    • @Love - 您可以将其更改为您想要的任何内容。它是您的代码;) 如果您希望整个实体离开 Select 以获得 IQueryable<TestDetailRecord> 或添加 ToList() 以将结果具体化到列表中,那么您最初的问题只选择了最后的 PKey 字段。
    【解决方案2】:
    var pkeys = (from tests in testContext.testDetailRecords
                 orderby tests.Pkey descending
                 select tests.Pkey).Take(100).ToList();
    

    【讨论】:

    • 哦,没关系,不用抱歉。我只是觉得直接纠正人们的答案很有趣。
    【解决方案3】:
    var result = testContext.testDetailRecords.OrderByDescending(tests.Pkey).Take(100).Select(...);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2015-05-21
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      相关资源
      最近更新 更多