c# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
c# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

14 Eylül 2015 Pazartesi

LINQ Extensions - Any

Merhaba, 

LINQ extensions methodlarından ANY methodunu anlatacağım. 

Elinizde bir liste var ve bu listenin bir durumu sağlayıp sağlamadığını anlamak istiyorsunuz. Böyle bir durumda LINQ extensions - ANY methodunu kullanabilirsiniz. 

Bir koşul verip size geri bool değer döndüren bir yapısı vardır.

Nasıl mı?


var result = listSample.Any(item => (item % 10) == 0);


Burada eğer bir tane bile 10'a göre modu 0 olan varsa true döner. 
Yani kısacası bir eleman bile koşulu sağlarsa true döner.


Klasik yöntem ile yapmış olsaydık;



var resut = false;foreach (var item in listSample){ if ((item % 10) == 0) {  resut = true;  break; }} 
Console.WriteLine("Sonuc : {0}",result); 

Görüldüğü gibi Clean-Kod olarak da işimize yarıyor


Bol kodlu günler..

LINQ Extensions - All

Merhaba,

LINQ extensions methodlarından ALL methodunu anlatacağım.

Elinizde bir liste var ve bu listenin bir durumu sağlayıp sağlamadığını anlamak istiyorsunuz. Böyle bir durumda LINQ extensions-ALL methodunu kullanabilirsiniz.

Bir koşul verip size geri bool değer döndüren bir yapısı vardır.

Nasıl mı?


var result = listSample.All(item => (item % 10) == 0);


Biz burada listenin içindeki elemanların hepsinin 10'a göre modunun 0 olması durumunu kontrol ettik.

Yani 1 tane bile 10'a göre modu 0 olmayan varsa result = false olacaktır. Kısacası bütün elemanlar verdiğimiz koşulu sağladığı zaman true döner.

Klasik yöntem ile yapmış olsaydık;


var resut = true;
foreach (var item in listSample){ if ((item % 10) != 0) { resut = false; break; }}
Console.WriteLine("Sonuc : {0}",result); 

Aslında kafanız karışmasın. ALL methodu da her bir elemanı dönüyor aslında. Sadece bize sadelik katmakta.

Bol kodlu günler..




LINQ Extensions - Aggregate

Merhaba,

Bugünkü yazımda size .Net - System.Linq içinde yer alan Aggregate methodundan bahsedeceğim.

Aggregate'in türkçesi; toplam, bütün, küme diye geçmektedir (bkn. GoogleTranslate). Peki biz yazılımcılar için ne manasına geliyor?

Yapılan işlemin bir sonraki elemanın işlemesi sırasına aktarımıdır. Karışık oldu biraz. Aslında en iyi anlatım şekli listenin içinde bulunan sayıların toplamı örneği olur. Yani;

1, 2, 3, 4, 5, 6, 7 sayılarını barındıran bir listemiz olsun.

Klasik yöntemle çözmek istersek;


var listSample = new List();listSample.AddRange(new[] { 1, 2, 3, 4, 5, 6, 7 });var result = 0; foreach (var item in listSample){   result += item;}Console.WriteLine("Sonuc : {0}",result);



Burada 1 ile 2'yi topladık ve 3 ile toplamaya gönderdik. Çıkan sonucu 4 ile topladık. Sürekli yapılan işlemi aslında bir sonraki elemanla toplamak için result değişkenini kullandık.

İşte Aggregate ile yapılma şekli;


var result = listSample.Aggregate((firstParam, secondParam) => firstParam + secondParam);Console.WriteLine("Sonuc : {0}",result); 


1. Adımda fisrtParam = 1, secondParam = 2
2. Adımda fisrtParam = 3, secondParam = 3
3. Adımda fisrtParam = 6, secondParam = 4
4. Adımda fisrtParam = 10, secondParam = 5
5. Adımda fisrtParam = 15, secondParam = 6
6. Adımda fisrtParam = 21, secondParam = 7

Sonuç = 28

Aggregate'in nasıl kullanıldığını örnek üzerinden açıklamaya çalıştım.

Bol kod'lu günler..

1 Ocak 2012 Pazar

İnternet Uygulaması Yazarken Geçtiğim Yollar

Javada da işime yarası için .Net tabanlı NHibernate ve MVC-2 ile başlama istedim.

Temel olarak entity ile aynı mantık. Ama bir çok şeyi elle ayarlamak zorunda kaldım. Tabloları ve alanları xml dosyayla mapledim. Uzun ve gıcık bir iş yani.

Loglar için güzel bir kütüphane olan < log4net > 'i kullandım. Güzel ve çok rahat kullanımı.

Validation işlemleri için < FluentValidation > 'ı kullandım. Bu da aynı şekilde güzeldi.

Bunlar güzeldi fakat burdan sonra sinirlenmeler ve kopmalar başladı :) neden mi?

Spark kullanmak istedim verilerimi  view tarafında  daha düzgün göstermek ve yönetmek için. Hal böyle olunca vs2010 'u güncellemem gerekti default olarak gelmiyor sanırım. Buraya kadar herşey normal. Fakat İstanbul Üniversitesi Yurdunun interneti o kadar yavaşki daha doğrusu yok yok. -bit bit gelen bir internet düşünün- Güncellemeler bir türlü gerçekleşmedi. Böyle olunca view tarafı çok karışık olacak diye soğudum ve vazgeçtim MVC'den. Normal Asp.Net şablon Master Page yapısıyla kodladım.

Birde NHibernate'in şu config olayları çok detaylı. Aslında başlangıç için 2-3 parametreyi bilmeniz yeterli ama bana göre değil bu yöntem. Kod içinde yazan her şeyden haberim olması gerek. Nasıl çalıştığı olmasada ne iş yaptığını bilmem gerek yoksa içim rahat etmiyor. Bu huyumu seviyorum aslında :)

Ayrıca yazılımda JQuery ve hazır site layout'u kullanarak kullanıcı için güzel hale getirmeye çalıştım. Olamazsa olmaz olan veritabanı olarak SqlServer 2008 Express Edition kullandım.

Aslında site %85 bitti. Kullanıma çıkartmıştım BETA olarak fakat çok zeki bir kişi :) tarafından hacklendim. Sunucuyu yeniden yapılandırmam gerekiyor. Bu yüzden Ocak ayının ilk hafta sonuna yetiştirmeye çalışacağım.

İlk defa girdiğim sunucu olayında bazı şeyleri yapmam zaman alıyor ama hoşuma gidiyor :)

Herkese bol kodlu günler...

17 Aralık 2011 Cumartesi

C# IndexOf, LastIndexOf

Geçen gün iş yerinde düşünülen bir algoritma gereği bir cümlenin içindeki ilk 20 karakterin içindeki son boşluğun bulunması gerekti.

LastIndexOf ile çözüldü. Hoşuma gitti sizlerle de paylaşmak istedim.

var text = "salih selametoğlu antalya"
var indexOfSpace = text .LastIndexOf(' ',18, 16); //boşluk var tek tırnak arasında
yani 18. index dahil olmak üzere başla (19. karakter oluyor => antalya'nın a'sı) ve sıfırıncı indexe(sola) doğru 16 karakter dahil al.
  • ih selametoğlu a
Sonra bunun içindeki son boşluğun indexini genel texte göre verir.

Yani sonuç = 17

LastIndexOf 'un parametreleri;
  • char value = aranacak karakter (stringde olabilir)
  • int startIndex = Aramaya başlanılacak olan yer
  • int count = başa doğru alınacak karakter sayısı. Verilmezse sıfırıncı indexe kadar alır.
  • StringComparison = Dil ayarları için

LastIndexOf 'a değinmişken IndexOf 'a da değinmek istedim.

IndefOf ise herşey aynı sadece count değerimiz sağa doğru ilerler.


Index mantığını anlamak için bu yazı işinize yarayabilir.


Bol kodlu günler...

13 Ocak 2010 Çarşamba

Program yazmaya başlayalım...

Çok uzun bir ara versekte tekrar başlayıp, en iyi yerlere gelmeye çalışacağız. Şimdi bir önceki yazımda algoritmaya değinmiştik. Tabi bu işler 30 satırlık bir yazı ile ne anlatılır ne de anlaşılabilir. Onun için örnekler ile bunu pekiştirmeye çalışacağız.

Örneğimize daha doğrusu problemimize gelince;

Elimizde bir kova mavi boya ve bir kova kırmızı boya(aynı boyutlarda) var. Bunları yer diğiştirmek..

Şimdi çözüme geçelim.

Hafif bir analiz yapalım;
Şimdi bunları yerdeğiştirmek için bir tanesini boşaltmamız gerekmez mi? Evet gerekir ama bunu toprağa dökmek yanlış olur herhalde? O zaman bu işlem için üçüncü kovaya ihtiyaç duyarız.

Şimdi mantığımızı toplayalım;
2'si dolu olmak üzere 3 tane kovamız var. 1. kovayı alıp 3. kovaya dökelim. Sonra da 2. kovayı 1. kovaya dökelim. Şimdi 2. kovadakini 1. kovaya yerleştirmiş olduk. 3. kovamızdakinide 2. kovamıza döktükmüydü bu işlem tamamlanmış olur.

Şimdi bunun kodlarını yazalım.

C# için kod parçacığı;
string tempKova = string.Empty; // 3. kovamızı oluşturduk.

tempKova = txtKova1.Text;
txtKova1.Text = txtKova2.Text;
txtKova2.Text = tempKova;

C için kod parçacığı;
char kova1, kova2, kova3;
kova1='S';
kova2='O';
kova3=' ';
printf("1. Kova=%c\n",kova1);
printf("2. Kova=%c\n",kova2);
printf("3. Kova=%c\n",kova3);
kova3 = kova1;
kova1=kova2;
kova2=kova3;
printf("Yer degistikten sonra...\n");
printf("1. Kova=%c\n",kova1);
printf("2. Kova=%c\n",kova2);
printf("3. Kova=%c\n",kova3);

burda dikkat etmemiz gereken 2 kodda da değişken tipleri aynı olmalıdır. Aksi takirde taşma ya da tip uyuşmazlığı olabilir.

Eğer bu sorunu örneğimize uygularsak;
3. kovamızın 1. kovamızdan küçük olduğunu düşünelim. Taşan kısme elimizde tutamayız değil mi? ya da 2. kovamız delikli olsun yine istediğimiz sonucu alamayız.

Şimdilik kodlar üzerine kafa yormayın eğer bilmiyorsanız. Onlara daha sonra değineceğiz...

Not: Hiç bir programın yapılış tarzı tek değildir. Farklı yapılabilir.

Hepinize bol kodlu günler..