Linq 实体框架



我已经尝试了很多小时来创建具有独特和排序的Linq Query。在本文中,描述了与此相关的一般问题。 我找到解决方案的唯一方法是创建一个普通的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 中可以实现吗?

做这样的事情:(根据您的更新列名称(

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)

据我们了解,您正在使用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);

最新更新