數據庫中有一張表,我們稱之爲表Document。 此表的字段:通過不同的請求逐步查找表中的單個記錄
- MajorVersionNumber
- MinorVersionNumber
- RELEASEDATE
有規則來確定版本和有效日期的順序。我將給出用C#3查找版本的到期日期的規則,因爲它看起來更容易用英語閱讀。
var nextMinorVersion = Versions.FirstOrDefault((version) =>
(version.majorVersionNumber == currentVersion.majorVersionNumber) &&
(version.minorVersionNumber == currentVersion.minorVersionNumber + 1));
if (nextMinorVersion != null) return nextMinorVersion.ReleaseDate;
var nextMajorVersion = Versions.FirstOrDefault((version) =>
(version.majorVersionNumber == currentVersion.majorVersionNumber + 1) &&
(version.minorVersionNumber == 0));
if (nextMajorVersion != null) return nextMajorVersion.ReleaseDate;
return null;
現在,這個規則必須在SQL中實現的用於MS SQL Server 2005和2008年。我想,可能只佔非常繁瑣,低效和ureadable表達式。考慮到它在C#中看起來有多麼微不足道,我認爲我不能輕易做到這一點,因爲我並不熟悉SQL。
我正在尋找一種在SQL中執行此操作的方式,其複雜程度與C#中的複雜度相同。
對不起,我不知道如何概括這個問題。關於概括問題及其標題的建議也非常感謝。
UPDATE 對於那些誰不與C#3麻利我會盡力解釋僞規則:
if exists nextMinorVersion so that
nextMinorVersion.majorVersionNumber = currentVersion.majorVersionNumber and
nextMinorVersion.minorVersionNumber = currentVersion.minorVersionNumber + 1
then expirationDate = nextMinorVersion.ReleaseDate
else if exists nextMajorVersion so that
nextMajorVersion.majorVersionNumber = currentVersion.majorVersionNumber + 1 and
nextMinorVersion.majorVersionNumber = 0
then expirationDate = nextMajorVersion.ReleaseDate
else expirationDate = null
你能用簡單的句子或僞代碼解釋規則嗎?我並不擅長LINQ ;-) –
我剛剛意識到我的示例代碼中沒有LINQ,只是C#3擴展方法。編輯問題以符合此;)。 –