Şimdi Ara

EF ile tablodan belirtilen kosula gore veri cekemiyorum (Linq Extension method)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
6
Cevap
0
Favori
149
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
1 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar

    Elimde iki adet tablo var.

        public class NewsCategory
    {
    public int NewsCategoryId { get; set; }
    public string NewsCategoryName { get; set; }
    public News News { get; set; }
    }


    ve

    public class News: IEntity
    {
    public int NewsId { get; set; }
    public string NewsHeader { get; set; }
    public string NewsContent { get; set; }
    public DateTime NewsReleaseDate => DateTime.Now;
    public string NewsImgUrl { get; set; }
    public int NewsCategoryId { get; set; }
    public NewsCategory NewsCategory { get; set; }
    }



    Yapmak istedigim 6 adet farkli kategoriye ait haberlerden, her kategoriye ait en son haberleri almak. Mesela 50 saglik haberi var, ben en son olani cekmek istiyorum ve bunu toplu olarak yapmak istiyorum. Yani saglik, spor, fitnes vs bunlarin her birine ait en son girdiyi cikarip tek bir listede tutmak istiyorum ama nedense bir turlu olmuyor.


    Denedigim varyasyonlar. Ama hic birini asamadim. surekli EF nin queryi cozemedigine dair hata mesaji aliyorum.

    // con.News.Include(x => x.NewsCategory).Where(x => x.NewsCategoryId == x.NewsCategory.NewsCategoryId).Reverse().Select(x => x.NewsCategoryId).Distinct().ToList();
    //con.News.Include(x => x.NewsCategory).GroupBy(x => x.NewsCategoryId).Select(g => g.Last()).ToList();
    // con.News.Include(x => x.NewsCategory).Where(x => x.NewsCategoryId == x.NewsCategory.NewsCategoryId).GroupBy(x => x.NewsId).Select(grp => grp.LastOrDefault()).ToList();
    //var query1= con.Set<News>().Include(x => x.NewsCategory).Where(x => x.NewsCategoryId == x.NewsCategory.NewsCategoryId).GroupBy(x=>x.NewsCategoryId);
    //var query2 = query1.Select(g => g.Last());
    return con.Set<News>().Where(x => x.NewsCategoryId != 0).GroupBy(x => x.NewsCategoryId).Select(grp => grp.LastOrDefault()).ToList();



    < Bu mesaj bu kişi tarafından değiştirildi ebavamqko -- 9 Şubat 2020; 12:2:22 >







  • lastordefaultu kullanamazsın onun yerine ilk orderbydescending kullan sonra seç
    Stack Overflow
    Get the latest Value of table via EntityFramework
    https://stackoverflow.com/questions/14981003/get-the-latest-value-of-table-via-entityframework




  • Group by yaparsan count sum gibi alanlari alabilirsin. Dolayisi ile her kategoruden son 10 haberi getir tarzi sorgu group by ile yapilmaz. Yapsan da verimsiz olur.
    https://www.sqlshack.com/sql-partition-by-clause-overview/

    Partition over kullanman gerek. Onu da EF ile uretmeye claismak yerine sql ile yap view olustur. Onu EF ile cek.



    < Bu mesaj bu kişi tarafından değiştirildi mahoni_38 -- 11 Şubat 2020; 9:44:41 >
  • quote:

    Orijinalden alıntı: mahoni_38

    Group by yaparsan count sum gibi alanlari alabilirsin. Dolayisi ile her kategoruden son 10 haberi getir tarzi sorgu group by ile yapilmaz. Yapsan da verimsiz olur.
    https://www.sqlshack.com/sql-partition-by-clause-overview/

    Partition over kullanman gerek. Onu da EF ile uretmeye claismak yerine sql ile yap view olustur. Onu EF ile cek.
    su anlik EF ile kullandigim icin o sekilde yapmam gerekli ama bilgi icin tesekkurler.
  • quote:

    Orijinalden alıntı: Gökşen PASLI

    lastordefaultu kullanamazsın onun yerine ilk orderbydescending kullan sonra seçhttps://stackoverflow.com/questions/14981003/get-the-latest-value-of-table-via-entityframework
    EF CORE 3.0 da degisiklik olmus.

    yani linq i yaz tolist ile gonderme bitmis. daha cok entitileri alip asquerable yapip o sekilde sorgulari yaparak client side olayini bitirmisler. o sekilde hallettim sorunu. tesekkurler.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.