2017-03-20 81 views
1

以下の3つのテーブルが以下のように構成されています。私はエンティティのフレームワークを3つのテーブルの間にクエリを joblink, usersubmitted, runstatus, submitted_time, changelist orderby submitted timeを取得するために参加する書き込みしようとしています。'string'型を暗黙的に 'System.Collections.Generic.List <string>'に変換できません。

私は、出力を返すホルダークラスを持っています... gerritsはList<string>であり、これは1回の実行で複数の値を持つ可能性があることに注意してください。どのようにエラーを修正するか、これを達成するためのより良い方法がありますか?

ホルダークラス: -

namespace Dashboard.Model.ApiModels 
{ 
    public class LookaheadRunInfo 
    { 
     public string ECJobLink { get; set; } 
     public List<String> changelists { get; set; } 
     public string UserSubmitted { get; set; } 
     public string SubmittedTime { get; set; } 
     public string RunStatus { get; set; } 
    } 
} 

API: -

public IEnumerable<LookaheadRunInfo> GetLookaheadRunInfoSearch(LookaheadRunsFilterCriteria filterCriteria) 
    { 
     List<LookaheadRunInfo> lookaheadRunsInfo = new List<LookaheadRunInfo>(); 
     var lookaheadRunData = bitDB.lookahead_run.OrderByDescending(x => x.lookahead_run_id).Skip(filterCriteria.PageNumber * filterCriteria.PageSize).Take(filterCriteria.PageSize).ToList(); 
     foreach (var lookaheadRunRow in lookaheadRunData) 
     { 
      var lookaheadRunId = lookaheadRunRow.lookahead_run_id; 
      var lookaheadRuns = new LookaheadRunInfo(); 
      lookaheadRuns = (from lrcl in bitDB.lookahead_run_change_list 
              join cl in bitDB.change_lists on lrcl.change_list_id equals cl.change_list_id 
              join lr in bitDB.lookahead_run on lrcl.lookahead_run_id equals lr.lookahead_run_id 
              where lrcl.lookahead_run_id == lookaheadRunId 
              orderby lr.submission_time 
              select new LookaheadRunInfo 
              { 
               ECJobLink = lr.ec_job_link, 
               //gerrits = cl.change_lists.Select(x => x.change_list.ToString()).ToList(), 
               changelists = cl.change_list.ToString(), 
               UserSubmitted = lr.submitted_by, 
               SubmittedTime =lr.submission_time.ToString(), 
               RunStatus = lr.lookahead_run_status, 

              }).ToList(); 
      lookaheadRunsInfo.Add(lookaheadRuns); 
     } 
     return lookaheadRunsInfo; 
    } 

TABLES: -

lookahead_run (Table#1) 
+-------------------+--------+----------------+-------------------+----------+ 
lookahead_run_id(PK)|joblink | usersubmitted |submitted_time  |runstatus 
+-------------------+--------+----------------+-------------------+----------+ 
15963---------------+link1---+---username1----+2017-03-17 22:28:53--Fail----- 

lookahead_run_change_list (Table#2) 
+---------------+----------------+-----------------+ 
changelistid(PK)|lookahead_run_id|change_list_id 
+---------------+----------------+-----------------+ 
38591-----------+15963-----------+34022 
38590-----------+15963-----------+34021 
38589-----------+15963-----------+34020 


change_lists (Table#3) 
+-------------+-----------+ 
change_list_id|changelist 
+-------------+-----------+ 
34022-------- 1823900 
34021-------- 1819483 
34020-------- 1818572 

エラー: -

Error 1 Cannot implicitly convert type 'string' to 'System.Collections.Generic.List<string>'

+0

エラーを示す行はどれですか? –

+0

@unlucky - 'changelists = cl.change_list.ToString()、'はエラー –

+0

を表示します.cl.change_listの値が異なる複数のLookaheadRunInfoオブジェクトではなく、各ECJobLinkのcl.change_listのコレクションを返しますか? –

答えて

0

クラス定義を見て、changelistsがリストとして定義されているので、ここでクエリを調べてください。ここでは、List Of stringにcl.change_list.ToString()を割り当てています。それは同じエラーメッセージです、あなたは文字列のリストに文字列値を割り当てようとしています。

修正

あなたがchangelistsのデータ型について確信している場合は、リストのクエリからその.ToString()を削除し、代わりに.ToList()を使用しています。 changelistsが文字列の場合、プロパティ定義に必要な変更を加えることを意味します。

+0

'ToList()に変更すると'エラー 'int'に 'ToList'の定義が含まれず、 'int'型の最初の引数を受け入れる拡張メソッド 'ToList'が見つかりませんでしたusingディレクティブまたはアセンブリ参照がありません)。 –

+0

説明してください、あなたはその場所で何をしようとしていますか? –

+0

私のデータベーステーブルが見れば...一つのルックアヘッドで複数のチェンジリストを持つことができ、 'change_lists'テーブルから' changelist'値をリスト

関連する問題