PROBLEM:
Linq sorgusunda, örneğin a.saatBaslangic.ToString("MM:hh") gibi bir ifadeyle verinin görünümünü 12:35 şeklinde düzenleyemiyoruz, hata veriyor. Aslında hatayı burada değil de grid nesnesine bind ederken veriyor buradaveriyormuş gibi zannettiriyor. Peki ben veritabanından gelen saat verisinin saniye kısmını görmek istemiyorum ve sorunsuz bir grid tablomda görmek istiyorum. Ne yapacağız?
ÇÖZÜM:
Internette bulduğum çözümleri denemekten 3 saat falan vaktim gitti. Ben de http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/562fdfff-3c09-4ba3-8dd8-963c2e288c9d/ sayfasında daha iyi bir yöntem yok mu diye soran birisinin beğenmediği yöntemi kullanarak çözdüm. Sonuçta işe yarıyor. Gerçi o sayfada daha iyi bir yöntem sunulmuş ama ben bu şekilde yaptım.
Yani, string formatlama işlemini doğrudan zaman değişkeni üzerinde kullandıktan sonra gride bind eteye kalkınca hata verdiği için;
benim istediğim saat ve dakika bilgisini ayrı ayrı elde edip ortasına da : ayracı koyarak uzun yoldan halletmiş oldum. Bu sefer de saat veya dakika tek rakamlı iseçirkin göründüğünden, bunlara :00 sayı biçimini stringformat ile uyguladım ve hata vermeden çift rakamlı gösterdi.
Ayrıca iki tane from X in kullandım. birincisi sorgunun kendisi ve parantez içinde ve sonunda toList() var. Bu bir tavsiye. Bence tekfromkullanmak ve toList kullanmamak da aynı sonucu verecektir yani hata vermeyecektir ancak yapanların bir bildiği vardır diyerekten bu şekilde bıraktım.
Bir diğer husus, "etiket =" şeklinde sorguda anonim assembly dendiğini zannettiğim takma isim kullanırsak, boşlukkarakterihariç Türkçe karakter ismi olarak etiket tanımlamış oluyoruz ve gride bind ettiğimizde sütun başlığı olarak göründüğü gibi, bunu otomatik tamamlama intellisense menüsünde de görebilmek ve Türkçe karakter problemi olmadan kullanabilmek güzel birşey.</p>
<p> </p>
<p>var query = from c in (from a in db.tblZamans<br /> join b in db.tblListeGunIsimleris on a.idgun equals b.id<br /> orderby a.idgun ascending<br /> select new { b.gun, a.saatBaslangic, a.saatBitis }).ToList()<br /> select new { Gün = c.gun, Başlangıç_Saati = string.Format("{0:00}", c.saatBaslangic.Hours) + ":" + string.Format("{0:00}", c.saatBaslangic.Minutes), Bitiş_Saati = string.Format("{0:00}", c.saatBitis.Hours) + ":" + string.Format("{0:00}", c.saatBitis.Minutes) };
kaynak: http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/567237c8-0fd0-4d4c-a31e-935ea4d9653f/