2017-03-07 29 views
2

我想檢索SP,Latestbuild(基於時間戳)並公佈日期如下,我需要以下指導如何根據日期列獲取最新信息並返回BuildMetrics類型的對象?

1.如何根據date_announced中的時間戳獲取最新版本(格式爲2016- 12-02 19點24分32秒)列software_product_builds表?我試過如下,但窮人的工作

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

2.How我返回類型的對象建立指標,我認爲目前的錯誤與這個?

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

什麼是所有這些類,您使用的一些庫? – CodingYoshi

+0

什麼是所有這些類是什麼意思?'BuildMetrics'是通過Api Model類,現在我正試圖編寫一個方法從數據庫檢索datea來填充類的屬性? –

+0

你有這樣的代碼行:'List softwareBuildMetrics = new List ();'這是'BuildMetrics'的通用列表。 'List'類型沒有'SP','LatestBuild'和'AnnouncedDate'屬性,所以你會得到這個錯誤。 – CodingYoshi

回答

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(); 
+0

如何根據software_product_builds表中date_announced(格式爲2016-12-02 19:24:32)列中的時間戳獲取最新版本? –

+0

你是指最後的構建?或特定的構建? – Usman

+0

last或latest build?數據庫有一個date_announced列,它有製作時間戳的時間戳...需要用它來確定哪個是最後一個(最新)版本 –

0

你有這行代碼:

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

也就是說BuildMetrics的泛型列表。列表類型沒有SP,LatestBuildAnnouncedDate屬性,因此您正在收到該錯誤。

我想你想要做的是這樣的:

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; 
+0

Coding Yoshi - 當我返回新度量標準時,出現錯誤'錯誤不能將類型'Dashboard.Model.ApiModels.BuildMetrics'隱式轉換爲'System.Collections.Generic.IEnumerable ' 。存在明確的轉換(您是否缺少演員?)'\t,如何轉換? –

+0

您需要返回'softwareBuildMetrics'而不是'newMetric'。請參閱編輯。 – CodingYoshi