2016-07-21 11 views
0

を追加する場合、私は働く、それ以下のコードを持っている:リスト、アップデートが見つかりましたが、そうでない場合

List<XXTJobTableModel> xjobs = filexxts.GroupBy(x=> x.job) 
      .Select(fx => new JobTableModel 
      { 
       job_no = fx.First().job, 
       emps = fx.GroupBy(x=>x.emp_id).Select(x => new EmployeeTableModel 
       { 
        eid = x.First().emp_id, 
        heds = x.GroupBy(h => h.HED).Select(h => new HEDModel 
        { 
         hed = h.First().HED, 
         hours = h.Sum(c => c.HOURS), 
         amt = h.Sum(c => c.AMOUNTRATE) 
        }).ToList() 
       }).ToList() 
      }).ToList(); 

public class JobTableModel 
{ 
    public string job_no { get; set; } 
    public List<EmployeeTableModel> emps { get; set; } 
} 

public class EmployeeTableModel 
    { 
     public string emp_id { get; set; } 
     public List<HEDModel> heds { get; set; } 
    } 

public class THEDModel 
    { 
     public string hed { get; set; } 
     public decimal hours { get; set; } 
     public decimal amt { get; set; } 
    } 

私はすでに別のデータソースからロードされた別のList<XXTJobTableModel> yjobsを持っています。私がやりたい何job_noがyjobsに見つからない場合、その後、yjobsに(従業員と彼のデータで)ジョブを追加。 job_noはyjobsで発見され、そしてEMP_IDは、そのジョブに従業員(およびHEDデータ)を追加し、そのジョブのEmployeeテーブルに見つからない場合。その仕事に従業員が見つかった場合、従業員リストにHEDデータを追加するだけです。

私は何とかxjobsとyjobsをマージしたり、私が直接yjobsリストにxjobsをロードした場合場合、私は好みを持っていません。

おかげ

答えて

0

あなたは、このマージ操作を行うためのLINQ文の非常に簡潔なセットまたはすべてでちょうどすべてのソリューションをお探しですか?私がすることは、1つのセットをループし、LINQを使って各アイテムを他のセットと比較し、比較結果のアイテムを3番目のセットに追加することです。このような問題は、管理可能な部分に分解してから、小さな部分が機能したら大きなソリューションに再構成する必要があります。試してみて、もしあなたがここにいる人が確かに空白を埋めることができるでしょう。

+0

よりconsiseまたはより高性能オプションがあった場合、私は間違いなくループ、私は思っていた可能性があります。 – RememberME

+0

通常あり、このようなもののためのより良いパフォーマンスのオプションですが、私はそれを右に、より良い、より高速な方法を行う方法を見つけ出す、その後、最初に動作するように何かを得るためのアプローチに従う傾向があります。 –

関連する問題