특정 간격으로 실행되는 여러 테스트가있는 작업이있는 경우가 있습니다. 작업 실행은 기본적으로 고유 한 RunId (GUID)로 특정 실행을 그룹화하는 여러 결과를 참조하는 데 사용되는 GUID 인 고유 한 TestRunId를 생성합니다.단일 열에 대한 LINQ Groupby 쿼리
이제 문제는 생성 된 고유 실행을 선택해야하지만 내 LINQ 쿼리가 모든 실행을 선택한다는 것입니다.
나는이var testRunIds = ((from tests in context.testresults
where tests.JobId == jobId
select new
{
tests.TestRunId
}).GroupBy(t=>t.TestRunId).OrderBy(t=>t.Key).Skip((pagenum - 1) * pagesize).Take(pagesize)).ToList();
처럼 뭔가를 시도하지만 말했듯이,이 쿼리는 각각의 모든 testResult을 선택합니다. 지금 내가 어떻게하는지 잘 모르겠다. 나는 Distinct()를 시도했으나 그것도 작동하지 않았다. 아래 샘플 데이터.
감사
나는 나는 그것의 본질적 그룹 등 여러 TestRunId 값을 가지고 있다는 문제가있다 생각합니다. 내가 필요로하는 것을 달성하기 위해 중위, 나는 사용하여 시도 (가지고 Linqer 사용)from Queries in db.TestResult
where
Queries.JobId == 1
group Queries by new {
Queries.TestRunId,
Queries.StartTime,
Queries.EndTime
} into g
orderby
g.Key.TestRunId
select new {
_ID = (int?)g.Max(p => p.Id),
g.Key.TestRunId,
g.Key.StartTime,
g.Key.EndTime
}
을하지만 이것은 단지 본질적으로
SELECT max(id)[ ID],
TestRunId,
StartTime,
Endtime
FROM dbo.query where jobid = 1 group by TestRunId,StartTime,Endtime order by StartTime;
하지만 내가 필요로하는
SELECT TestRunId,StartTime,Endtime FROM testresult where jobid = 1 group by TestRunId order by StartTime;
입니다 MSSQL 데이터 소스 작동 MySQL 용
작동해야하지만 'TestRunId'를 저장하기 위해 익명 개체를 생성 할 필요는 없습니다. 어쩌면 그냥'tests.JobId == jobId select tests.TestRunId) .Distinct()'가 더 잘 작동할까요? – Rhumborl
나는 그것을 시도했지만 익명의 객체를 생성하지 않으면 강력한 유형을 사용하여 액세스 할 수 없다. 이 경우, 나는이 테스트를 선택해야한다 .Distinct(). OrderBy (x => x.StartTime) .Skip ((pagenum - 1) * pagesize) .Take (pagesize)). ToList();'그러나 이것은 실용하지 못합니다. 같은 결과. 이 작업은'... 선택 테스트) .GroupBy (t => t.TestRunId)). OrderBy (x => x.Key) .Skip ((pagenum - 1) * pagesize) .Take (pagesize)) .ToList();'다시 같은 결과. – Navyseal
예상되는 결과는 무엇입니까? testrunid에 의해 그룹을 만들 때 그 고유 한 testrunid와 연관된 여러 레코드가됩니다. 기대하는 샘플 출력을 표시 할 수 있습니까? –