title: Combine two select statments to fetch data from DB
body: <p>I am little bit confuse about the problem and I dont know how to respolve this. 
  So the problem is following. I have two <code>Models</code>(<strong>ReportElement, ReportDefinition</strong>) and one <code>ViewModel</code> (<strong>ReportElementDefinitionVM</strong>) </p>
  
  <p><strong>ReportDefinition Model</strong></p>
  
  <pre><code>public partial class IzvjestajDefinicija
      {
          public IzvjestajDefinicija()
          {
              IzvjestajElementi = new HashSet&lt;IzvjestajElementi&gt;();
              IzvjestajiGenerisani = new HashSet&lt;IzvjestajiGenerisani&gt;();
          }
  
          public int IzvjestajDefinicijaId { get; set; }
          public int? IzvjestajTipId { get; set; }
          public int? IzvjestajXsdshemaiId { get; set; }
          public string KratkiNaziv { get; set; }
          public string Naziv { get; set; }
          public string Opis { get; set; }
          public byte Status { get; set; }
          public DateTime DatumUnosa { get; set; }
          public DateTime? DatumAzuriranja { get; set; }
          public string KorisnikUnosa { get; set; }
          public string KorisnikAzurirao { get; set; }
  
          public virtual IzvjestajTip IzvjestajTip { get; set; }
          public virtual IzvjestajXsdshema IzvjestajXsdshemai { get; set; }
          public virtual ICollection&lt;IzvjestajElementi&gt; IzvjestajElementi { get; set; }
          public virtual ICollection&lt;IzvjestajiGenerisani&gt; IzvjestajiGenerisani { get; set; }
      }
  </code></pre>
  
  <p><strong>ReportElement Model</strong></p>
  
  <pre><code>public partial class IzvjestajElementi
      {
          public int IzvjestajElementiId { get; set; }
          public int? IzvjestajDefinicijaId { get; set; }
          public string Element { get; set; }
          public string ElementVrijednosti { get; set; }
          public byte Status { get; set; }
          public DateTime DatumUnosa { get; set; }
          public DateTime? DatumAzuriranja { get; set; }
          public string KorisnikUnosa { get; set; }
          public string KorisnikAzurirao { get; set; }
  
  
  
          public virtual IzvjestajDefinicija IzvjestajDefinicija { get; set; }
      }
  </code></pre>
  
  <p>And ReportElementDefinitionVM</p>
  
  <pre><code>public class GenerisaniIzvjestajiVM
      {
          public int IzvjestajiGenerisaniId { get; set; }
          public int? IzvjestajDefinicijaId { get; set; }
          public int? IzvjestajXsdshemaiId { get; set; }
          public string ShemaXSD { get; set; }
          public string KratkiNazivDefinicijeI { get; set; }
          public string Naziv { get; set; }
          public string Opis { get; set; }
          public string Izvjestaj { get; set; }
          public DateTime DatumOd { get; set; }
          public DateTime DatumDo { get; set; }
          public string ImportedExcel { get; set; }
          public DateTime DatumKreiranja { get; set; }
          public byte Status { get; set; }
          public DateTime DatumUnosa { get; set; }
          public DateTime? DatumAzuriranja { get; set; }
          public string KorisnikUnosa { get; set; }
          public string KorisnikAzurirao { get; set; }
          public string NazivXmlfajla { get; set; }
          public string Elementi { get; set; }
          public string ElementiVrijednosti { get; set; }
  
      }
  </code></pre>
  
  <p>And right now I have one <code>Select</code> statment which take elemnt from <code>ReportDefinition</code> and <code>ReportElementDefinitionVM</code> </p>
  
  <pre><code> public ListaSveVM UcitajIzvjestaj()
          {
              var listaFromDb = _context.IzvjestajDefinicija.Where(x =&gt; x.Status == 1).ToList().OrderByDescending(x =&gt; x.IzvjestajDefinicijaId);
              var listaM = new List&lt;GenerisaniIzvjestajiVM&gt;();
              var data = _context.IzvjestajDefinicija.Where(x =&gt; x.Status == 1).OrderByDescending(x =&gt; x.IzvjestajDefinicijaId)
                  .Select(i =&gt; new GenerisaniIzvjestajiVM()
                  {
                      IzvjestajiGenerisaniId = i.IzvjestajDefinicijaId,
                      KratkiNazivDefinicijeI =
                      (_context.IzvjestajDefinicija.Where(x =&gt; x.IzvjestajDefinicijaId == i.IzvjestajDefinicijaId &amp;&amp; x.Status == 1).FirstOrDefault()).KratkiNaziv,
                      Naziv = i.Naziv,
                      Opis = i.Opis,
                      IzvjestajXsdshemaiId = i.IzvjestajXsdshemaiId,
                      ShemaXSD = i.IzvjestajXsdshemai.Shema,
                  }).ToList();
  
  
              var lista = "";
              lista = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.None);
              var listaVM = new ListaSveVM();
              listaVM.sve = lista;
              return listaVM;
          }
  </code></pre>
  
  <p>And Right now, I want to take two property from ReportElement which is (Element,ElementValue) to be display in my <code>View</code> and so far I create something like this: </p>
  
  <pre><code> var elementi = _context.IzvjestajElementi.Where(x =&gt; x.Status == 1).OrderBy(x =&gt; x.IzvjestajDefinicijaId)
                  .Select(i =&gt; new GenerisaniIzvjestajiVM()
                  {
                      Elementi = i.Element,
                      ElementiVrijednosti = i.ElementVrijednosti
                  }).ToList();
  </code></pre>
  
  <p>And when I pass <code>elementi</code> to I get error</p>
  
  <p><code>lista = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.None);</code></p>
  
  <pre><code>Severity    Code    Description Project File    Line    Suppression State
  Error   CS1503  Argument 2: cannot convert from 'System.Collections.Generic.List&lt;IZ.Model.VM.GenerisaniIzvjestajiVM&gt;' to 'Newtonsoft.Json.JsonConverter'
  </code></pre>
  
  <p>And I also try to create another ViewModel to combine all data from those two models, but I can not fetch data. 
  Sorry for long post, but problem is very complicated and I describe problem as better as I can. 
  Does anyone know how to solve this problem I would be very thankful. </p>
  
  <p><strong>Update</strong></p>
  
  <p><strong>IzvjestajElementi.cs</strong></p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  
  namespace IZ.Model.DBModels
  {
      public partial class IzvjestajElementi
      {
          public int IzvjestajElementiId { get; set; }
          public int? IzvjestajDefinicijaId { get; set; }
          public string Element { get; set; }
          public string ElementVrijednosti { get; set; }
          public byte Status { get; set; }
          public DateTime DatumUnosa { get; set; }
          public DateTime? DatumAzuriranja { get; set; }
          public string KorisnikUnosa { get; set; }
          public string KorisnikAzurirao { get; set; }
  
  
  
          public virtual IzvjestajDefinicija IzvjestajDefinicija { get; set; }
      }
  }
  </code></pre>
  
  <p>So I want to combine these two into one .Select or redesing these two statment as one</p>
  
  <pre><code>var data = _context.IzvjestajDefinicija.Where(x =&gt; x.Status == 1).OrderByDescending(x =&gt; x.IzvjestajDefinicijaId)
                  .Select(i =&gt; new IzvjestajElementiVM()
                  {
                      IzvjestajDefinicijaId = i.IzvjestajDefinicijaId,
                      KratkiNazivDefinicijeI =
                      (_context.IzvjestajDefinicija.Where(x =&gt; x.IzvjestajDefinicijaId == i.IzvjestajDefinicijaId &amp;&amp; x.Status == 1).FirstOrDefault()).KratkiNaziv,
                      Naziv = i.Naziv,
                      Opis = i.Opis,
                      ShemaXSD = i.IzvjestajXsdshemai.Shema,
                  }).ToList();
  
              var elementi = _context.IzvjestajElementi.Where(x =&gt; x.Status == 1).OrderBy(x =&gt; x.IzvjestajDefinicijaId)
                  .Select(i =&gt; new IzvjestajElementiVM()
                  {
                      Elementi = i.Element,
                      ElementiVrijednosti = i.ElementVrijednosti
                  }).ToList();
  </code></pre>
  
  <p>When I pass <code>element</code> to </p>
  
  <pre><code>lista = JsonConvert.SerializeObject(data, elementi);
  </code></pre>
  
  <p>I get error</p>
  
  <p>Error   CS1503  Argument 2: cannot convert from 'System.Collections.Generic.List' to 'Newtonsoft.Json.Formatting'</p>
  
  <p>I need something like this </p>
  
  <pre><code>var data = _context.IzvjestajDefinicija.Where(x =&gt; x.Status == 1).OrderByDescending(x =&gt; x.IzvjestajDefinicijaId)
                  .Select(i =&gt; new IzvjestajElementiVM()
                  {
                      IzvjestajDefinicijaId = i.IzvjestajDefinicijaId,
                      KratkiNazivDefinicijeI =
                      (_context.IzvjestajDefinicija.Where(x =&gt; x.IzvjestajDefinicijaId == i.IzvjestajDefinicijaId &amp;&amp; x.Status == 1).FirstOrDefault()).KratkiNaziv,
                      Naziv = i.Naziv,
                      Opis = i.Opis,
                      ShemaXSD = i.IzvjestajXsdshemai.Shema,
                      Elementi = i.Elementi,
                      ElementiVrijednosti = i.ElementiVrijednosti
                  });.ToList();
  </code></pre>
  
  <p>I want to display Elementi and ElementiVrijednosti into datatable. Since Elementi and ElementiVrijednosti are not contain in IzvjestajDefinicija only in IzvjestaElementiVM I can not assign. 
  So I want to display Elementi and Elementi vrijednosti into my Datatable. Checke picture belowe.</p>
  
  <p><a href="https://i.stack.imgur.com/4dLR2.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4dLR2.jpg" alt="enter image description here"></a></p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Text;
  
  namespace IZ.Model.VM
  {
      public class IzvjestajElementiVM
      {
          public int IzvjestajElementiId { get; set; }
          public int? IzvjestajDefinicijaId { get; set; }
          public int? IzvjestajXsdshemaId { get; set; }
          public int? IzvjestajTipId { get; set; }
          public string Naziv { get; set; }
          public string Opis { get; set; }
          public string Izvjestaj { get; set; }   
          public byte Status { get; set; }
          public string KorisnikUnosa { get; set; }
          public string KorisnikAzurirao { get; set; }
          public string NazivXmlfajla { get; set; }
          public string ShemaXSD { get; set; }
          public string KratkiNazivDefinicijeI { get; set; }
          public string Elementi { get; set; }
          public string ElementiVrijednosti { get; set; }
  
      }
  }
  </code></pre>