none
entity framework join sorgusu dönen değer RRS feed

  • Soru

  • selamlar,
    entity framwork ile 3 adet tabloyu birleştiren bir sorgu yazdım.
    sorgu şu şekilde : 

    var result = (from ci in entity.table
                                           join table2 in entity.Table2ID
                                           on c.ID equals entity.Table2ID

                                           join table2 in entity.Table2ID
                                           on c.ID equals entity.Table2ID
    select new {alanlar,alanlar,..}
                                            )ToList();

    bu sorgudaki result sonucunu repeater direk datasource olarak verince çalışıyor,
    ancak ben bu sorguyu farklı bir classın içinde çağırmaya çalıştığım zaman,
    tip dönüşümünü hatası alıyorum.

    bu tip metodları doğru kullanma yöntemi nedir acaba.
    teşekkürler.

    11 Eylül 2014 Perşembe 11:57

Yanıtlar

  • Sorun "select new { alanlar, alanlar, ...}" kısmından dolayı oluyor. Burada her item için anonymous tip oluşuyor. Sizde bu tipi alamıyorsunuz. Ya dynamic olarak almalısınız ki biraz saçbaş yoldurur ya da engüzeli bir class hazırlayın bu iş için . örn;

    public class ResultItem
    {
    	public int Alan1 { get; set; }	
    	public string Alan2 { get; set; }	
    	public DateTime Alan3 { get; set; }
    }
    
    var result = (from ci in entity.table
                                           join table2 in entity.Table2ID
                                           on c.ID equals entity.Table2ID
    
                                           join table2 in entity.Table2ID
                                           on c.ID equals entity.Table2ID
    select new ResultItem() {Alan1 = ci.alan1, Alan2 = c1.alan2.ToString(), ..})ToList();

    gibi. Bu şekilde tipi belli,  List<ResultItem> tipli bir instance'ınız olacak elinizde.


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


    11 Eylül 2014 Perşembe 12:18
    Moderatör

Tüm Yanıtlar

  • Sorun "select new { alanlar, alanlar, ...}" kısmından dolayı oluyor. Burada her item için anonymous tip oluşuyor. Sizde bu tipi alamıyorsunuz. Ya dynamic olarak almalısınız ki biraz saçbaş yoldurur ya da engüzeli bir class hazırlayın bu iş için . örn;

    public class ResultItem
    {
    	public int Alan1 { get; set; }	
    	public string Alan2 { get; set; }	
    	public DateTime Alan3 { get; set; }
    }
    
    var result = (from ci in entity.table
                                           join table2 in entity.Table2ID
                                           on c.ID equals entity.Table2ID
    
                                           join table2 in entity.Table2ID
                                           on c.ID equals entity.Table2ID
    select new ResultItem() {Alan1 = ci.alan1, Alan2 = c1.alan2.ToString(), ..})ToList();

    gibi. Bu şekilde tipi belli,  List<ResultItem> tipli bir instance'ınız olacak elinizde.


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


    11 Eylül 2014 Perşembe 12:18
    Moderatör
  • herzamanki gibi süperdi hocam.
    farklı bakış açısı sağladığınız için teşekkür ederim.

    • Düzenleyen Serkan Tepe 11 Eylül 2014 Perşembe 12:44 d
    11 Eylül 2014 Perşembe 12:44
  • İşi bilen, kafası çalışan kişiler soru sorunca yanıt vermesi de kolay oluyor tabi ;)

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

    11 Eylül 2014 Perşembe 15:39
    Moderatör