0

我有一个名为的模型ProjectVersion,它具有以下属性:

    专业
    国际未成年人
    整数补丁
    诠释?修订
    字符串预发布
    字符串元数据

现在我正在尝试根据Semantic Versioning 2.0.0 规范以降序对版本进行排序,其中优先级为Major > Minor > Patch > PreRelease

我还使用实体框架和 Linq 来获取我的数据,这是我目前使用的代码:

注意:以下代码中的所有小于“<”和大于“>”符号都替换为管道“|” 由于我对stackoverblow 缺乏经验。

公共列表|ProjectVersionDataContract| GetProjectVersions(int projectId)
        {
            // TODO: 根据规范评估版本控制系统和订单列表。
            var 版本 = 新列表|ProjectVersionDataContract|();
            使用 (var context = new Entity())
            {
                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();

                // 这里使用 AutoMapper 包将 Data Object 映射到 Data Contract
                版本.AddRange(vers.Select(Mapper.Map|ProjectVersion, ProjectVersionDataContract|));
            }

            返回版本;
        }

现在这是我的数据,但它首先返回最低(最旧)版本,这与我想要的相反。我什至尝试将其更改.OrderBy()OrderByDescending()没有任何区别。如果这有什么不同的话,这是一个 WCF 服务。

4

1 回答 1

0

尝试

var vers = context.ProjectVersions.Where(v => v.ProjectId == projectId)
                    .OrderByDescending(v => v.MajorVersion)
                    .ThenByDescending(v => v.MinorVersion)
                    .ThenByDescending(v => v.PatchVersion)
                    .ThenByDescending(v => v.RevisionVersion)
                    .ThenByDescending(v => v.PreReleaseVersion).ToList();

或者您可以执行以下操作

var normal = GetProjectVersions(idval);
var finalResult =normal.Reverse(); 
于 2013-08-07T04:14:48.207 回答