none
Linq To Sql Sorgu sonucu dönen datayı bır listede nasıl toplayabilirim

    Soru

  • Merhabalar. Linq to sql kullanarak veritabanından datayı çekiyorum.2 kırılım olduğu için ilk sorguda anakategoriID'leri listeliyorum.Sonra bu sorgu içerisinde dönüp, gelen değere eşit olan dataları çekiyorum. Kısacası sormak istediğim şey, Dönen değerleri bir koleksiyona veya bir listeye atmam lazım. Bu listeyide Datalist'e, datasource olarak basıcam.Ne kullanabilirim?

    Kod:

                               

     var sorguData = (from x in dc.grups
                                 where drpAnaKategori.SelectedValue == x.ust_grup_kod
                                  select new { x.grup_kod }).ToList();

                            //sorguData listesinden, örnek veriyorum 3 tane AnakategoriID dönüyor. Bu ID lerin herbiriyle bir alttaki foreach de dönüp, o ID ye ait ürünleri bir listede toplamam gerekiyor. 

                            foreach (var sorguSonuc in sorguData)
                            {
                                var urunList = (from y in dc.uruns where sorguSonuc.grup_kod == y.grup_kod select new { resim_k = y.resim_k, RecordID = y.RecordID }).ToList();
                                //bu kısımda dönen datayı doldurabileceğim bir liste lazım..Sonra bu listeyi datasource olarak basıcam.

                            }


    • Düzenleyen Kdrnnc 11 Nisan 2014 Cuma 09:09
    11 Nisan 2014 Cuma 07:56

Yanıtlar

  • Mesajda yaziyor iste. Listen urun tipinde, ama eklemeye calistiklarin anonymous bir tip ( ... select new { ....}  ). Bu sekilde yapmak istiyorsan:

     .. select new {} ...

    yerine dogrudan urunu sec : select y

    • Yanıt Olarak İşaretleyen Kdrnnc 12 Nisan 2014 Cumartesi 22:06
    11 Nisan 2014 Cuma 15:16

Tüm Yanıtlar

  • var sorguData = (from x in dc.grups
          where drpAnaKategori.SelectedValue == x.ust_grup_kod
           select new { x.grup_kod }).ToList();
    
    var urunList = (from y in dc.uruns 
       where sorguData.Contains( y.grup_kod ) 
       select new { 
         resim_k = y.resim_k, RecordID = y.RecordID 
       }).ToList();
    

    Sorgudata sadece urunList icin ise:

    var urunList = (from y in dc.uruns 
           where y.Grup.ust_grup_kod == drpAnaKategori.SelectedValue
           select new { 
              resim_k = y.resim_k, RecordID = y.RecordID 
              }).ToList();
    

    11 Nisan 2014 Cuma 10:04
  • Sanırım anlatamadım.2 tane tablom var. urun ve grup adında. Grup tablosuna bir sorgu çekiyorum.ve anaKategoriID 'leri listeliyorum.Buradan dönen ID lerin herbirine ait birden fazla ürün bulunmaktadır.Yani tek bir tane ID dönse kıyaslayıp listeleme yapabilirim.Yanlız birden fazla anakategoriID döndüğü için her birinin altındaki ürünleri bir listede tutup, listeleme yapıcam.Yani ilk gelen AnakategoriID 'den 100 adet ürün geldi. Bunu listeye atıcak.Sonra ikinci AnakategoriID den 200 tane ürün geldi bunu da o listeye ilave edecek......böle devam edecek.. Mantıken bunları bir listede tutup her dönen ürünleri o listeye += deyip ekleme yapmam gerekiyor.ve bu listeyide datasource olarak basmam gerekiyor..
    11 Nisan 2014 Cuma 11:33
  • AddRange kullanabilirsin;

    List<urun> _yeniListe = new List<urun>();
    
    foreach (var sorguSonuc in sorguData)
    {
        var urunList = (from y in dc.uruns where sorguSonuc.grup_kod == y.grup_kod select new { resim_k = y.resim_k, RecordID = y.RecordID }).ToList();
        _yeniListe.AddRange(urunList);
    }


    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    11 Nisan 2014 Cuma 11:40
  • Böle bir hata alıyorum hocam
    11 Nisan 2014 Cuma 11:48
  • Sen bunu kodu denedikten sonra mi yoksa once mi soyluyorsun? Kodun yaptigini anlatmissin da.

    11 Nisan 2014 Cuma 15:13
  • Mesajda yaziyor iste. Listen urun tipinde, ama eklemeye calistiklarin anonymous bir tip ( ... select new { ....}  ). Bu sekilde yapmak istiyorsan:

     .. select new {} ...

    yerine dogrudan urunu sec : select y

    • Yanıt Olarak İşaretleyen Kdrnnc 12 Nisan 2014 Cumartesi 22:06
    11 Nisan 2014 Cuma 15:16
  • Hocamm çok teşekkür ederim select y; şeklinde oldu. Yalnız benim merak ettiğim şey; şimdi bu liste urun tablosundan türedi. urun tablosu yerine başka bir type kullanamaz mıyız bunun mantığı nedir? Listede hem string hem int hem unique hem datetime olcak olabilir. bu yuzden listenin tipini tek bir değişkenle belirtemeyiz (örn: strng). Tüm type'leri kapsayan bir değişken var mıdır 
    12 Nisan 2014 Cumartesi 22:06
  • anonymous var ya. Sana daha ilk cevapta verdim cozumunu, ama sen denemeye bile zahmet etmeden anlatamadim dedin. 
    13 Nisan 2014 Pazar 01:19
  • Hocam denedim denemezmiyim o kısım gözümden kaçmış.Çok teşekkür ederim..

    13 Nisan 2014 Pazar 17:22