C# 如何基于日期列获取最新信息并返回BuildMetrics类型的对象?

C# 如何基于日期列获取最新信息并返回BuildMetrics类型的对象?,c#,entity-framework,C#,Entity Framework,我正在尝试检索SP、最新构建(基于时间戳)和宣布日期,如下所示,我需要以下方面的指导 1.如何根据软件产品构建表中发布日期(格式为2016-12-02 19:24:32)列中的时间戳获取最新构建?我尝试了以下方法,但无效 softwareBuildMetrics.LatestBuild = bitDB.software_product_builds.Where(x => x.software_product_build_id == softwareProductid).Select(x =

我正在尝试检索SP、最新构建(基于时间戳)和宣布日期,如下所示,我需要以下方面的指导


1.如何根据软件产品构建表中发布日期(格式为2016-12-02 19:24:32)列中的时间戳获取最新构建?我尝试了以下方法,但无效

softwareBuildMetrics.LatestBuild = bitDB.software_product_builds.Where(x => x.software_product_build_id == softwareProductid).Select(x => x.software_product_build).FirstOrDefault();
2.如何返回Build Metrics类型的对象,我认为当前的错误与此相关

public class BuildMetrics
{
    public string SP { get; set; }
    public string LatestBuild { get; set; }
    public string AnnouncedDate { get; set; }

}
方法:-

    public IEnumerable<BuildMetrics> GetBuildMetrics()
    {
        var bitDB = new BitDatabaseConnection().bitDB;
        List<BuildMetrics> softwareBuildMetrics = new List<BuildMetrics>();
         //Get unique list of software product ids
         var softwareProductIds = bitDB.software_products.Select(x => x.id).Distinct().ToList();
        foreach (var softwareProductid in softwareProductIds)
           {
               softwareBuildMetrics.SP = bitDB.software_products.Where(x => x.id == softwareProductid).Select(x => x.software_product).FirstOrDefault();
               softwareBuildMetrics.LatestBuild = bitDB.software_product_builds.Where(x => x.software_product_build_id == softwareProductid).Select(x => x.software_product_build).FirstOrDefault();
               softwareBuildMetrics.AnnouncedDate = bitDB.software_product_builds.Where(x => x.software_product_build_id == softwareProductid).Select(x => x.date_announced).FirstOrDefault();


            }
    }
public IEnumerable GetBuildMetrics()
{
var bitDB=新的BitDatabaseConnection().bitDB;
List softwareBuildMetrics=新列表();
//获取软件产品ID的唯一列表
var softwareProductIds=bitDB.software_products.Select(x=>x.id).Distinct().ToList();
foreach(softwareProductid中的var softwareProductid)
{
softwareBuildMetrics.SP=bitDB.software_products.Where(x=>x.id==softwareProductid)。选择(x=>x.software_product.FirstOrDefault();
softwareBuildMetrics.LatestBuild=bitDB.software\u product\u builds.Where(x=>x.software\u product\u build\u id==softwareProductid)。选择(x=>x.software\u product\u build)。FirstOrDefault();
softwareBuildMetrics.AnnouncedDate=bitDB.software\u product\u builds.Where(x=>x.software\u product\u build\u id==softwareProductid)。选择(x=>x.date\u announced)。FirstOrDefault();
}
}
错误:-

Error   1   'System.Collections.Generic.List<Dashboard.Model.ApiModels.BuildMetrics>' does not contain a definition for 'SP' and no extension method 'SP' accepting a first argument of type 'System.Collections.Generic.List<Dashboard.Model.ApiModels.BuildMetrics>' could be found (are you missing a using directive or an assembly reference?) C:\Users\gnakkala\gnakkala_dashboard\depot\software\projects\user_branches\gnakkala\Dashboard\Dashboard.Data.Repository\BuildRepositories\SoftwareProductRepository.cs  22  41  Dashboard.Data.Repository


Error   2   'System.Collections.Generic.List<Dashboard.Model.ApiModels.BuildMetrics>' does not contain a definition for 'LatestBuild' and no extension method 'LatestBuild' accepting a first argument of type 'System.Collections.Generic.List<Dashboard.Model.ApiModels.BuildMetrics>' could be found (are you missing a using directive or an assembly reference?)   C:\Users\gnakkala\gnakkala_dashboard\depot\software\projects\user_branches\gnakkala\Dashboard\Dashboard.Data.Repository\BuildRepositories\SoftwareProductRepository.cs  23  41  Dashboard.Data.Repository

Error   3   'System.Collections.Generic.List<Dashboard.Model.ApiModels.BuildMetrics>' does not contain a definition for 'AnnouncedDate' and no extension method 'AnnouncedDate' accepting a first argument of type 'System.Collections.Generic.List<Dashboard.Model.ApiModels.BuildMetrics>' could be found (are you missing a using directive or an assembly reference?)   C:\Users\gnakkala\gnakkala_dashboard\depot\software\projects\user_branches\gnakkala\Dashboard\Dashboard.Data.Repository\BuildRepositories\SoftwareProductRepository.cs  24  41  Dashboard.Data.Repository
错误1“System.Collections.Generic.List”不包含“SP”的定义,并且找不到接受“System.Collections.Generic.List”类型的第一个参数的扩展方法“SP”(是否缺少using指令或程序集引用?)C:\Users\gnakkala\gnakkala_dashboard\depot\software\Project\user_Branchs\gnakkala\dashboard\dashboard.Data.Repository\BuildRepositories\SoftwareProductRepository.cs 22 41 dashboard.Data.Repository
错误2“System.Collections.Generic.List”不包含“LatestBuild”的定义,并且找不到接受“System.Collections.Generic.List”类型的第一个参数的扩展方法“LatestBuild”(是否缺少using指令或程序集引用?)C:\Users\gnakkala\gnakkala_dashboard\depot\software\Project\user_Branchs\gnakkala\dashboard\dashboard.Data.Repository\BuildRepositories\SoftwareProductRepository.cs 23 41 dashboard.Data.Repository
错误3“System.Collections.Generic.List”不包含“AnnouncedDate”的定义,并且找不到接受“System.Collections.Generic.List”类型的第一个参数的扩展方法“AnnouncedDate”(是否缺少using指令或程序集引用?)C:\Users\gnakkala\gnakkala_dashboard\depot\software\Project\user_Branchs\gnakkala\dashboard\dashboard.Data.Repository\BuildRepositories\SoftwareProductRepository.cs 24 41 dashboard.Data.Repository

这不是向列表中添加数据的方式,而是执行以下操作

  foreach (var softwareProductid in softwareProductIds)
           {
               var matric = new BuildMetrics();
               matric.SP = bitDB.software_products.Where(x => x.id == softwareProductid).Select(x => x.software_product).FirstOrDefault();
               matric.LatestBuild = bitDB.software_product_builds.Where(x => x.software_product_build_id == softwareProductid).Select(x => x.software_product_build).FirstOrDefault();
               matric.AnnouncedDate = bitDB.software_product_builds.Where(x => x.software_product_build_id == softwareProductid).Select(x => x.date_announced).FirstOrDefault();
               softwareBuildMetrics.Add(matric);

            }
因为
List softwareBuildMetrics=newlist()
表示
BuildMetrics
对象的列表,这就是为什么我在上面的代码中创建了
BuildMetrics
的新对象

var matric = new BuildMetrics();
最后,我用
softwareBuildMetrics.Add(matric)将这个对象添加到列表中

编辑

您可以使用
orderbydecenting
获取最新版本

softwareBuildMetrics.LatestBuild = bitDB.software_product_builds.Where(x => x.software_product_build_id == softwareProductid).OrderByDescending(x => x.date_announced).Select(x => x.software_product_build).FirstOrDefault();

您有以下代码行:

List<BuildMetrics> softwareBuildMetrics = new List<BuildMetrics>(); 

你在使用什么样的类库?你说这些类库是什么意思?
BuildMetrics
是Api模型类,现在我正试图编写一个从数据库检索datea的方法来填充类的属性?你有这行代码:
List softwareBuildMetrics=new List()这是
BuildMetrics
的通用列表。
列表
类型没有
SP
LatestBuild
AnnouncedDate
属性,因此您会得到该错误。如何根据软件产品构建表中公布日期(格式为2016-12-02 19:24:32)中的时间戳获取最新构建?您是指最后一个构建?或特定构建?上次构建还是最新构建?数据库有一个列date_公布,该列有创建的时间戳…需要使用它来确定哪一个是最后一个(最新的)buildyou现在可以检查了。我的最后一个问题是,当我返回新度量值时,出现以下错误i
error 3无法将类型“Dashboard.Model.ApiModels.BuildMetrics”隐式转换为“System.Collections.Generic.IEnumerable”‌​. 存在显式转换(是否缺少转换?
,如何转换?编码Yoshi-当我返回新度量值时,出现错误
错误3无法将类型“Dashboard.Model.ApiModels.BuildMetrics”隐式转换为“System.Collections.Generic.IEnumerable”。存在显式转换(是否缺少转换?
,如何转换?您需要返回
softwareBuildMetrics
而不是
newMetric
。请参见编辑。
var newMetric = null;
foreach (var softwareProductid in softwareProductIds)
{
    newMetric = new BuildMetrics();
    newMetric.SP = bitDB.software_products.Where(x => x.id == softwareProductid).Select(x => x.software_product).FirstOrDefault();
    newMetric.LatestBuild = bitDB.software_product_builds.Where(x => x.software_product_build_id == softwareProductid).Select(x => x.software_product_build).FirstOrDefault();
    newMetric.AnnouncedDate = bitDB.software_product_builds.Where(x => x.software_product_build_id == softwareProductid).Select(x => x.date_announced).FirstOrDefault();

    softwareBuildMetrics.Add(newMetric);
}

return softwareBuildMetrics;