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

LINQ to等同于sql``带有领带的OP(n)''的实体。

洪伟兆
2023-03-14
问题内容

我最近一直在 sql server中 搜索LINQ等效项WITH TIES,遇到了两件事,这证明是无用的。 __

我知道这个问题以前曾被提出过,并且得到了公认的答案,但是它并不能像领带 一样
起作用。采用该解决方案GroupBy()如预期不会导致TOP(3) WITH TIES考虑包括数据集{3 2 2 1 1 0}的结果集将是{3 2 2 1 1}它应该是{3 2 2}

使用以下样本数据(从此问题中获取):

CREATE TABLE Person
(
    Id int primary key,
    Name nvarchar(50),
    Score float
)

INSERT INTO Person VALUES (1, 'Tom',8.9)
INSERT INTO Person VALUES (2, 'Jerry',8.9)
INSERT INTO Person VALUES (3, 'Sharti',7)
INSERT INTO Person VALUES (4, 'Mamuzi',9)
INSERT INTO Person VALUES (5, 'Kamala',9)

传统OrderByDescending(p => p.Score).Take(3)将会导致一个:MamuziKamala一个
Tom Jerry)它应该包括 BOTH

我知道没有内置的等效项,我已经找到了实现它的方法。我不知道这是否是最好的方法并为其他解决方案打开大门。


问题答案:

var query = (from q in list.OrderByDescending(s => s.Score).Take(3).Select(s => s.Score).Distinct()
from i in list
where q == i.Score
select i).ToList();

编辑:

我不确定您想要的顺序,但是要更改顺序,可以在 select iToList() 之间放置一个OrderBy(s => s.Score)。 __

我无法检查我的linq子句将生成什么sql语句。但是我认为您的答案要好得多。您的问题也很好。我从来没有想过在linq中保持联系。;)

基本上,它仅从第一个列表中获得前3个得分,并将它们与整个列表进行比较,而我仅获得与第一个列表中的得分相等的那些得分。



 类似资料:
  • 问题内容: 我需要执行以下sql: 此sql在我的oracle数据库中运行良好,但在我有时使用的h2数据库中却不起作用,因为未定义等级和分区。 因此,我需要转换此sql,以便它可以在h2和oracle中工作。 我想使用Java执行此sql。那么有可能将此sql拆分为不同的sql,而不进行排名和分区吗?然后用Java处理呢? 问题答案: 如果在分区中是唯一的,则可以:

  • 问题内容: 问题是阿拉伯文字未打印-请谁能解决我的问题? 问题答案: 删除并将编码更改为,这应该使您的字符

  • 问题内容: 有没有办法使HTML正确处理换行符?还是我必须替换为? 问题答案: 这是为了显示新行并以html返回回车,那么您不需要显式地执行它。您可以通过设置空白属性的行前值在CSS中完成此操作。

  • 问题内容: 快速提问。是否有等效于@的Java字符串: 例如,我可以使用C#进行处理,并使其在处理时忽略转义字符,而不必这样做。是否有Java等效项? 嗯:stackoverflow正在向我逃脱..大声笑。第二个示例应为: c :(双反斜杠)文件夹(双反斜杠)aFile 问题答案: 没有。转义/外部化字符串是您唯一的选择。

  • 问题内容: 标准的numpy回合平局打破了IEEE 754约定,将一半舍入到最接近的偶数。有没有一种方法可以指定不同的舍入行为,例如,向零或向- inf舍入?我说的不是天花板或地板,我只需要换一条领带即可。 问题答案: NumPy不对内部舍入模式进行任何控制。这有两种选择: 使用此答案中概述的内容。这使您可以完全控制舍入模式,但是用于简单的浮点数学运算可能会比NumPy慢。 使用via手动设置舍入

  • 问题内容: 我在Windows Server 2008上使用SQL Server 2008 Enterprise。我想从前11位到前20位选择结果(例如,我只对第11位到第20位结果感兴趣)。任何想法如何有效地在tsql中编写此查询? 在此先感谢,乔治 问题答案: 不幸的是,SQL Server没有提供类似于MySQL语法的任何东西。但是,您可能想要尝试使用派生表,如下所示: