C# Linq实体框架

C# Linq实体框架,c#,sql,linq,entity-framework-core,C#,Sql,Linq,Entity Framework Core,我已经尝试了好几个小时来创建具有distinct和orderby的Linq查询。在本文中,描述了与此相关的一般问题。 我找到解决方案的唯一方法是创建一个简单的SQL查询 SELECT TOP (10) [DATA] FROM TestResult inner join TestResultRelated on TestResultRelated.TestResult = TestResult.ID WHERE TestResultRelated.PATH = 'TestResultRelated

我已经尝试了好几个小时来创建具有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中实现吗?

执行以下操作:(根据您的更新列名)


据我们所知,您正在使用efcore和DbContext来提升TestResult和TestResultRelated表

这是我们从您的问题中了解到的问题代码

var db=new DbContext();
var result = (from a in db.TestResult
             join b in db.TestResultRelated on a.ID equals b.TestResult
             where b.PATH == "TestResultRelatedAdditionalData.SoftwareVersion"
             & a.USER_LOGIN_NAME == "emilwkj" & b.DATA!=" "
             group b by b.DATA into item
             orderby item.Max(e=>e.START_DATE_TIME) descending
             select item)
             .Take(10);

我们需要查看您的C#代码才能提供帮助,即您的实体类和DbContext。你想要实现的应该很简单。你的linq代码在哪里?所以问题是我需要找到前十个最新使用的软件版本。而且你不能在Linq或其他任何地方点餐。我不能向您展示DBContext,因为这是我工作的公司的内部内容。对不起,伙计们。但是,如果可能的话,将SQL转换为LinQ不是很简单吗?你不必为我写准确的代码。我已经使用LinQ很长时间了。请分享您的C#代码,以便我们可以帮助您。只需更新页面。我不能给出原始的上下文,但我的问题最好用一个小例子来描述,嗯,
Distinct(x=>…)
方法来自哪里?
var db=new DbContext();
var result = (from a in db.TestResult
             join b in db.TestResultRelated on a.ID equals b.TestResult
             where b.PATH == "TestResultRelatedAdditionalData.SoftwareVersion"
             & a.USER_LOGIN_NAME == "emilwkj" & b.DATA!=" "
             group b by b.DATA into item
             orderby item.Max(e=>e.START_DATE_TIME) descending
             select item)
             .Take(10);