我有一個大的學區數據庫,從中需要確定術語,學期和整年的開始和結束日期。每個學校都可能有不同的假期(其中週末計算爲期限開始日期),儘管這不太可能。 我已經獲得了拉到學校,他們的假期和每學期的結束日期,並從中計算出每學期的開始日期。到現在爲止還挺好。但有些學校有一些班級在全年(9月至6月)註冊。所以,我希望我的最後返回的日期看起來像(這代表了許多學校之一):C#Linq to SQL,查找分組行中的最小和最大日期
SchoolId SchoolYear TermCode TermBegin TermEnd TermCodeId
8CFD1 2016 TM1 08/29/2016 10/07/2016 F375E7
8CFD1 2016 TM2 10/10/2016 11/25/2016 898EF5
8CFD1 2016 TM3 11/28/2016 02/01/2017 F5140C
8CFD1 2016 TM4 02/02/2017 03/10/2017 DD95B1
8CFD1 2016 TM5 03/13/2017 05/05/2017 BE3635
8CFD1 2016 TM6 05/08/2017 06/09/2017 2B94F0
8CFD1 2016 YR 08/29/2016 06/09/2017 D97C9C
我得到的最接近是此查詢(使用的結果,我已經計算的開始日期):
from tdf in ReturnFromCalculatingStartDate
join tcd in SCH_YR_TRM_CODES on tdf.SchoolYearTermDefGu equals tcd.SCHOOL_YEAR_TRM_DEF_GU
orderby tcd.TERM_CODE
select new TermResult {
SchoolId = testOrgGu,
SchoolYear = testSchoolyear,
TermCode = tcd.TERM_CODE,
TermBegin = tdf.TermStartDate,
TermEnd = tdf.TermEndtDate,
TermCodeId = tcd.SCHOOL_YEAR_TRM_CODES_GU
它正確地返回了這些條款,但是我爲每個條款獲得了一年(YR)。我需要的是一個具有YR行的Min(TermBegin)和Max(TermEnd)的YR行。我需要在SchoolId和TermCode上進行分組,並獲取每個唯一代碼的最小值和最大值,但我不知道如何。
我從上面的Linq返回的數據如下。 Min(TermBegin)YR行的TermCodeId是我需要在結果中使用的TermCodeId。
SchoolId SchoolYear TermCode TermBegin TermEnd TermCodeId
8CFD1 2016 TM1 08/29/2016 10/07/2016 F375E7
8CFD1 2016 TM2 10/10/2016 11/25/2016 898EF5
8CFD1 2016 TM3 11/28/2016 02/01/2017 F5140C
8CFD1 2016 TM4 02/02/2017 03/10/2017 DD95B1
8CFD1 2016 TM5 03/13/2017 05/05/2017 BE3635
8CFD1 2016 TM6 05/08/2017 06/09/2017 2B94F0
8CFD1 2016 YR 08/29/2016 10/07/2016 d97C9C
8CFD1 2016 YR 10/10/2016 11/25/2016 e30980
8CFD1 2016 YR 11/28/2016 02/01/2017 ef5de2
8CFD1 2016 YR 02/02/2017 03/10/2017 bbe78f
8CFD1 2016 YR 03/13/2017 05/05/2017 ca28a7
8CFD1 2016 YR 05/08/2017 06/09/2017 2340c1
欣賞幫助,讓這遠遠具有挑戰性。
集團通過他們'SchoolId,學年和TermCode'。如果'TermCode'用於'YR'可以是'Year'或其他值,則首先固定在數據庫側的數據。發現用於一年所有不同的代碼,使他們都是一樣的,一個價值:它是一個代碼,所以它應該是相同的。 – CodingYoshi
不幸的是,我無法控制數據。然而TermCode對於年和學校是一致的,所以我刪除了那一點。我知道我需要組隊,然後選擇Min和Max,但我不知道該怎麼做。 – Jazzy