En iyi yanıtlayıcılar
C# Datatable Min-Max

Soru
-
merhaba datatable içerisinde min ve max değerlere ait isimleri bulmam lazım değerleri buluyorum ama karşılığı gelen isimi bulamıyorum datatable sutunları adsoyad ve yaş şeklinde burada maximum yaşın kim olduğunu bulmam lazım
int enbuyukyas =Convert.ToInt32(dtable.Compute("Max(yas)", ""));
bu şekilde en büyük değeri buluyorum ama en büyük değerin adsoyad sutununda karşılığını bir türlü bulamadım
Not: sql ile veritabanından sorgu istemiyorum datatable olması lazım
şimdiden teşekkür ederim.
Yanıtlar
-
pardon şimdi sonuç alabildim fakat anladığım kadarı ile sizin gösterdiğiniz şekilde liste sıralaması yapıyor ve en üst yani yüksek değeri alıyor benim istediğim sonucu alabilmem için iki ayrı sorgu kullanmam gerekecek
textbox1.Text="En yaşlı Kişinin Adı";
textbox2.Text="En Yaşlı Kişinin Yaşı";
Zaten max,min tüm diziyi dönmeden bulunmaz. İkisini tek döngüde şöyle bulabilirsiniz:
var maxAge = int.MinValue; var minAge = int.MaxValue; var maxName = ""; var minName = ""; dtable .Rows .Cast<DataRow>() .ToList() .ForEach(r => { if ((int)r["yas"] > maxAge) { maxAge = (int)r["yas"]; maxName = r["adsoyad"] as string; } if ((int)r["yas"] < minAge) { minAge = (int)r["yas"]; minName = r["adsoyad"] as string; } });
döngü sona erdiğinde yukarıdaki değişkenler dolacaktır. Metin kutularınızı bunlara eşitleyebilirsiniz. Fakat neden datatable gibi hantal bir şeyi kullanıyorsunuz?
- Düzenleyen Cihan YakarMVP 10 Nisan 2018 Salı 13:20
- Yanıt Olarak İşaretleyen tetee 10 Nisan 2018 Salı 13:24
Tüm Yanıtlar
-
var sonuc = dtable .Rows .Cast<DataRow>() .OrderByDescending(r => (int)r["yas"]) .Select(r => r["adsoyad"] as string) .First();
gibi. -
-
TextBox1.Text = sonuc;
-
-
pardon şimdi sonuç alabildim fakat anladığım kadarı ile sizin gösterdiğiniz şekilde liste sıralaması yapıyor ve en üst yani yüksek değeri alıyor benim istediğim sonucu alabilmem için iki ayrı sorgu kullanmam gerekecek
textbox1.Text="En yaşlı Kişinin Adı";
textbox2.Text="En Yaşlı Kişinin Yaşı";
-
pardon şimdi sonuç alabildim fakat anladığım kadarı ile sizin gösterdiğiniz şekilde liste sıralaması yapıyor ve en üst yani yüksek değeri alıyor benim istediğim sonucu alabilmem için iki ayrı sorgu kullanmam gerekecek
textbox1.Text="En yaşlı Kişinin Adı";
textbox2.Text="En Yaşlı Kişinin Yaşı";
Zaten max,min tüm diziyi dönmeden bulunmaz. İkisini tek döngüde şöyle bulabilirsiniz:
var maxAge = int.MinValue; var minAge = int.MaxValue; var maxName = ""; var minName = ""; dtable .Rows .Cast<DataRow>() .ToList() .ForEach(r => { if ((int)r["yas"] > maxAge) { maxAge = (int)r["yas"]; maxName = r["adsoyad"] as string; } if ((int)r["yas"] < minAge) { minAge = (int)r["yas"]; minName = r["adsoyad"] as string; } });
döngü sona erdiğinde yukarıdaki değişkenler dolacaktır. Metin kutularınızı bunlara eşitleyebilirsiniz. Fakat neden datatable gibi hantal bir şeyi kullanıyorsunuz?
- Düzenleyen Cihan YakarMVP 10 Nisan 2018 Salı 13:20
- Yanıt Olarak İşaretleyen tetee 10 Nisan 2018 Salı 13:24
-
-
SQL den veri okumak için DataTable kullanımı 2003-2006 neredeyse tek yoldu.. Generic tiplerin .net'e gelmesiyle buna ihtiyaç azaldı. Ben DataReader ile bir nesne listesine okuma taraftarıyım. Ama proje bu kadar basitse Entity Framework daha iyi olacaktır.