C# 如何基于日期列获取最新信息并返回BuildMetrics类型的对象?
我正在尝试检索SP、最新构建(基于时间戳)和宣布日期,如下所示,我需要以下方面的指导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 =
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现在可以检查了。我的最后一个问题是,当我返回新度量值时,出现以下错误ierror 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;