데이터베이스에 테이블이 있습니다.이 테이블을 호출하십시오.다른 요청으로 단계별로 단일 레코드 찾기
- 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;
지금이 규칙은 내가 노력하고 매우 복잡, 비효율적이고 ureadable 표현을 만들 수있는 MS SQL Server 2005 및 2008에 대한 SQL에서 구현해야합니다. C#에서 얼마나 사소한지를 생각해 보면, 나는 SQL을 잘 다루지 못하기 때문에 쉽게 할 수 없다고 생각합니다.
나는 SQL에서 C#과 비교적 비슷한 복잡성으로이를 수행 할 방법을 찾고있다.
이런 좁은 질문에 대해 사과드립니다. 일반화하는 방법을 모르겠습니다. 질문의 일반화에 대한 제안과 제목도 매우 높이 평가됩니다. 같은 - 나는 나는 그것을 생각
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 확장 메서드 만 사용했다. 이것에 해당하는 질문을 수정;). –