首页 > 解决方案 > Linq 实体框架

问题描述

我已经尝试了很多小时来创建具有 distinct 和 orderby 的 Linq 查询。在本文中,描述了与此相关的一般问题。我找到解决方案的唯一方法是创建一个普通的 SQL 查询

SELECT TOP (10) [DATA]
FROM TestResult
inner join TestResultRelated on TestResultRelated.TestResult = TestResult.ID
WHERE TestResultRelated.PATH = 'TestResultRelatedAdditionalData.SoftwareVersion'
AND TestResult.USER_LOGIN_NAME = 'emilwkj'
AND TestResultRelated.DATA != ''
group by TestResultRelated.DATA order by max([START_DATE_TIME]) desc

我不需要解决这个确切问题的方法,但这里有一个关于该问题的示例:

Table 1:
ID | DateUsed | Version
1 | 01/01/2018 | 1.0
2 | 02/03/2018 | 1.1
3 | 05/05/2018 | 1.0
4 | 04/06/2018 | 1.4

在上表中,如何在 LinQ 中提取最后使用的 3 个不同的软件版本?

这可以在 LinQ 中实现吗?

标签: c#sqllinqentity-framework-core

解决方案


做这样的事情:(根据你的更新列名)

var query = (from c in TestResult
        join tbl2 in TestResultRelated on c.ID equals tbl2.TestResult 
        where c.USER_LOGIN_NAME = 'emilwkj' and tbl2.DATA != ''
        orderby tbl2.DATA
        group tbl2 by tbl2.DATA into g
        select new 
        {
            Id = g.Key.Id,
            Name = g.Key.Name,
            TestResultRelated = g
        })
        .Distinct()   //.Distinct(x=>x.someColumn) 
        .OrderByDescending(x => x.date);
        .Take(10)

推荐阅读