我正在尝试检索SP,Latestbuild(基于时间戳)并宣布日期如下,我需要以下指导
1.如何根据software_product_builds表中date_announced(格式为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();
}
}
错误: -
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
答案 0 :(得分:1)
这不是你如何将数据添加到列表而是做这样的事情
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<BuildMetrics> softwareBuildMetrics = new List<BuildMetrics>();
表示BuildMetrics
个对象的列表,这就是为什么在上面的代码中我创建了BuildMetrics
的新对象
var matric = new BuildMetrics();
并填写数据,最后我将此对象添加到softwareBuildMetrics.Add(matric);
修改强>
您可以使用OrderByDecending
获取最新版本
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();
答案 1 :(得分:0)
你有这行代码:
List<BuildMetrics> softwareBuildMetrics = new List<BuildMetrics>();
这是BuildMetrics的通用列表。列表类型没有SP
,LatestBuild
和AnnouncedDate
属性,因此您收到了该错误。
我认为你想要做的是:
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;