我有一个名为ProjectVersion
模型,它具有以下特性:订货与LINQ to SQL的C#.NET WCF
int Major int Minor int Patch int? Revision string PreRelease string MetaData
现在我想根据Semantic Versioning 2.0.0 specification订购降序版本,其中优先级为Major > Minor > Patch > PreRelease
我还使用实体框架和LINQ得到我的数据,这里是我目前使用的代码:
注:所有小于“<”和大于‘>’迹象下面的代码被替换为管道'|'由于我对stackoverblow没有经验。
public List|ProjectVersionDataContract| GetProjectVersions(int projectId) { // TODO: Evaluate Versioning system and order list according to it's specification. var versions = new List|ProjectVersionDataContract|(); using (var context = new Entities()) { var vers = context.ProjectVersions.Where(v => v.ProjectId == projectId) .OrderBy(v => v.MajorVersion) .ThenBy(v => v.MinorVersion) .ThenBy(v => v.PatchVersion) .ThenBy(v => v.RevisionVersion) .ThenBy(v => v.PreReleaseVersion).ToList(); // This uses the AutoMapper package to map the Data Object to the Data Contract versions.AddRange(vers.Select(Mapper.Map|ProjectVersion, ProjectVersionDataContract|)); } return versions; }
现在得到的是我的数据,但是它首先返回最低(最老)的版本,这与我想要的相反。我甚至尝试将.OrderBy()
更改为OrderByDescending()
,没有任何区别。这是一个WCF服务,如果这有什么区别。
你能不能.Reverse()它 – Jonesopolis
没有意识到这是一个功能,我会尝试,让你知道。 – Oxymoron
更新查询以'VAR VERS = context.ProjectVersions.Where(V => v.ProjectId ==专案编号) .OrderBy(V => v.MajorVersion) .ThenBy(V => v.MinorVersion) .ThenBy (v => v.PatchVersion) 。ThenBy(v => v.RevisionVersion) 。ThenBy(v => v.PreReleaseVersion).Reverse()。ToList();'得到以下结果: – Oxymoron