0
Merhaba arkadaşlar, twitterdaki gibi takip edilenlerin son girdiklerini listelemeye çalışıyorum ama kafam karıştı. İlk önce kaç takipçisi olduğunu şu kod ile çekiyordum:
var kayitlar = (from u in Db.Takip where uyeId == u.UyeId select new NTakip { TakipId = u.TakipId, TakipEdilenId = u.TakipId }).ToList();
Bu kod bana takip edilenleri veriyordu ben burada bu takip edilenleri alıp:
var kayit = (from u in Db.Yorum.OrderByDescending(u => u.YorumId).Where(u => u.Onay == true).Where(u => u.UyeId == kayitlar[0].TakipEdilenId).Skip(sayfa * 50).Take(50) select new NYorum { YorumId = u.YorumId, UyeId = u.UyeId, Yorumu = u.Yorumu, Tarih = u.Tarih, IpAdres = u.IpAdres, Onay = u.Onay, UyeAdi = u.Uye.UyeAdi }).ToList();
Şurada araya sıkıştırdım ".Where(u => u.UyeId == kayitlar[0].TakipEdilenId)" bunun orda [0] la ilk kaydı alınmamış hali gibi hepsini dizip son 50sini almak istiyorum. Karışık anlattım galiba, kısa olarak twitterdaki gibi takipçileri dizip sonra bunların attığı YorumId sine göre 50şerli olarak dizmek istiyordum ama kullanıcıları birleştirip yorumId lerini alma kısmında kafam çok karıştı, nasıl yapabilirim acaba?
0
Şimdi sorunuzu tekrar okudum. İstediğinizi şu şekilde anlıyorum:
Kullanıcıların takip ettikleri kişilerin girmiş oldukları son 50 yorumu listelemek istiyorsunuz.
İlk okuduğumda takip edilenlerin yazmış oldukları son 50 yorum olarak algıladım. Siz sanırım sadece toplamda son 50 kaydı almak istiyorsunuz.
int uyeId=1; var y = (from _y in db.Yorum where db.Takip.Where(t=> t.UyeId==uyeId).Select(t => t.TakipEdilenId).Contains(_y.UyeId) select _y).OrderByDescending(t => t.Tarih).Take(50);
Yukarıdaki ifade kullanıcıların takip listesinde olan diğer kullanıcıların girmiş oldukları son 50 kaydı getirir.
Sql sunucuda şu sorguyu çalıştırıcaktır.
SELECT TOP (5) [Extent1].[YorumId] AS [YorumId], [Extent1].[UyeId] AS [UyeId], [Extent1].[Yorumu] AS [Yorumu], [Extent1].[Tarih] AS [Tarih] FROM [dbo].[Yorums] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[Takips] AS [Extent2] WHERE (1 = [Extent2].[UyeId]) AND ([Extent2].[TakipEdilenId] = [Extent1].[UyeId]) ) ORDER BY [Extent1].[Tarih] DESC go
Seçim kriteri olarak siz istediğiniz verileri belirterek performansını iyileştirebilirsiniz.
Cevap yazabilmek için üye girişi yapmalısınız.
Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol