1 Ağustos 2016 Pazartesi
16 Haziran 2016 Perşembe
Sql Server Veritabanındaki Tablolara Ait Satır Sayıları
SELECT sc.name +'.'+ ta.name TableName
,SUM(pa.rows) RowCnt
FROM sys.tables ta
INNER JOIN sys.partitions pa
ON pa.OBJECT_ID = ta.OBJECT_ID
INNER JOIN sys.schemas sc
ON ta.schema_id = sc.schema_id
WHERE ta.is_ms_shipped = 0 AND pa.index_id IN (1,0)
GROUP BY sc.name,ta.name
ORDER BY SUM(pa.rows) DESC
,SUM(pa.rows) RowCnt
FROM sys.tables ta
INNER JOIN sys.partitions pa
ON pa.OBJECT_ID = ta.OBJECT_ID
INNER JOIN sys.schemas sc
ON ta.schema_id = sc.schema_id
WHERE ta.is_ms_shipped = 0 AND pa.index_id IN (1,0)
GROUP BY sc.name,ta.name
ORDER BY SUM(pa.rows) DESC
Sql Server Veritabanındaki Tüm Tablolardaki Tüm kayıtları Temizleme (Silme)
DECLARE @Nombre NVARCHAR(MAX);
DECLARE curso CURSOR FAST_FORWARD
FOR
Select TableName AS Nombre from App.DeleteTables ORDER BY TableOrder
OPEN curso
FETCH NEXT FROM curso INTO @Nombre
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
BEGIN
DECLARE @statement NVARCHAR(200);
SET @statement = 'DELETE FROM ' + @Nombre;
print @statement
execute sp_executesql @statement;
END
FETCH NEXT FROM curso INTO @Nombre
END
CLOSE curso
DEALLOCATE curso
DECLARE curso CURSOR FAST_FORWARD
FOR
Select TableName AS Nombre from App.DeleteTables ORDER BY TableOrder
OPEN curso
FETCH NEXT FROM curso INTO @Nombre
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
BEGIN
DECLARE @statement NVARCHAR(200);
SET @statement = 'DELETE FROM ' + @Nombre;
print @statement
execute sp_executesql @statement;
END
FETCH NEXT FROM curso INTO @Nombre
END
CLOSE curso
DEALLOCATE curso
24 Mart 2016 Perşembe
Web API'den Json Tipinde Veri Çekmek ve Kullanmak
Nihayet bu konu da aydınlandı... Elimde bir APIm var. İhtiyacım oldukça bu apiye metod yazarak dışarıdan erişiyorum. Önce API kısmına bakayım sonra da Client tarafı gelecek. Hazırladığım metod bana bir liste dönüyor. Bunun İçin metodun başına [HttpGet] koymak şart! Veya metod isminin başına Get koyularak da ayapılabiliyor. (Örneğin metodun adı Events ise bunu GetEvents olarak değiştirdiğimde metodun başına [HttpGet] Attribute'ünü koymaya gerek kalmıyor.)
API tarafınfa şimdilik iki metot var, bunlar aşağıdaki gibidir.
Şimdi gelelim client tarafında bu metotu kullanmaya.
Ekran görüntüleri herşeyi açıklıyor :)
11 Mart 2016 Cuma
2016 ve 10 Teknolojik Atılım
themt.co sitesinden alıntıdır :)
Bağışıklık Sistemi Mühendisliği
Genetik yönden değiştirilmiş bağışıklık sistemi hücreleri kanser hastalarının hayat kurtarıyor. Bu sadece bir başlangıç olabilir!

Tam olarak genleri ile oynanmış bitkiler
CRISPR sunduğu yöntemle kolaylıkla genler değiştirilerek, hastalığa direnç gösterme ve susuzluk toleransı gibi özellikler oluşturulabiliyor

Konuşabilen Arabirimler
Çin’in lider internet şirketinden güçlü konuşma teknolojisi ve bu teknoloji akıllı telefonların kullanımını daha da kolaylaştırıyor

Tekrar Kullanılabilir Roketler
Tipik olarak roketler yolculuğu sıralarında yok edilirler. Ama artık bu roketler karaya tekrar iniş yapabilecekler ve yakıt ikmali, ayarlamalar gibi şeyler yapıldıktan sonra bir sonraki yolculukları için hazır hale gelecekler.

Diğer Hemcinslerinden Bir Şeyler Öğrenebilen Robotlar
Peki ya robotlar diğerlerinin bildiği ve paylaştığı bilgilerinden bir şeyler öğrenebilseydi?

DNA Uygulama Mağazası
Bir çevrim içi mağaza, hem de genetik bilgilerinizin bulunduğu bir mağaza. Bu mağaza hastalık risklerinizi ve meyillerinizi ucuz ve kolayca öğrenebilir.

SolarCity’nin Devasa Fabrikası
Buffalo’daki 750 milyon dolarlık bir güneş enerjisi sistemi, sahip olduğu yüksek verimli güneş panelleri sayesinde her yol gigawatt değerinde enerji sunabilir.

Tesla Otomatik Pilot
Elektrikli araç üreticiniz, aracınıza sessizce göndereceği bir yazılım güncellemesiyle arabanızı kendi kendine sürebilen otonom bir sisteme çevirebilir.

Havadan Güç!
Wi-Fi gibi ve diğer iletişim teknolojilerinin yaydığı sinyallerle beslenen internet aygıtları küçük bilgisayarları ve algılayıcıları daha yaygın hale getirebilir.
10 Mart 2016 Perşembe
XML Data Source Add To Sql Server (Xml Veri Kaynağını Sql Server'a Tablo Yapısında Eklemek)
Sevdiğimiz bir hocamızın ihtiyacına binaen elindeki xml veriyi sql'e eklememiz gerekti. Yapılan işlemler aşağıdaki gibidir. :)
2. Sql Server'da XMLwidthOpenXML adında yeni bir tablo oluşturuyorum. Tablonun yapısı aşağıdaki gibidir.
3. Sırada xml dosyasındaki verileri bu tabloya atmak var. Bu işlemi aşağıdaki kod yardımıyla yapıyoruz.
4. Yukarıdaki kodu çalıştırdığımızda ekranda aşağıdaki gibi bir görünüm olmalıdır.
5. Xml dosyasında 12 adet book nesnesi var fakat burada tek satır var diye düşünmeyin. Sıra geldi bunu halletmeye :) XMLData sütunundaki hyperlinke tıkladığımızda bize xml dosyasımız olduğu gibi gösterir. Şimdi xml dosyasının içindeki verileri sql satırı olarak çekelim.
6. Yukarıdaki kodun çıktısı aşağıdaki gibi olmalıdır.
7. Artık buradan sonra iş kullanıcıya kalmış :) Bu satırları excel'e çekebilirsiniz veya Cursor kullanarak istediğiniz işlemleri yapabilirsiniz. Kolay Gelsin.
1. Örnek xml dosyası aşağıdaki gibidr. Elimdeki xml'de bu şekilde 12 adet book nesnesi var.
2. Sql Server'da XMLwidthOpenXML adında yeni bir tablo oluşturuyorum. Tablonun yapısı aşağıdaki gibidir.
3. Sırada xml dosyasındaki verileri bu tabloya atmak var. Bu işlemi aşağıdaki kod yardımıyla yapıyoruz.
4. Yukarıdaki kodu çalıştırdığımızda ekranda aşağıdaki gibi bir görünüm olmalıdır.
5. Xml dosyasında 12 adet book nesnesi var fakat burada tek satır var diye düşünmeyin. Sıra geldi bunu halletmeye :) XMLData sütunundaki hyperlinke tıkladığımızda bize xml dosyasımız olduğu gibi gösterir. Şimdi xml dosyasının içindeki verileri sql satırı olarak çekelim.
6. Yukarıdaki kodun çıktısı aşağıdaki gibi olmalıdır.
7. Artık buradan sonra iş kullanıcıya kalmış :) Bu satırları excel'e çekebilirsiniz veya Cursor kullanarak istediğiniz işlemleri yapabilirsiniz. Kolay Gelsin.
Anı Yaşamak
“Dünyada ölüm diye bir gerçek varken, sevdiğiniz kişinin hala nefes aldığına dua edin, akşam eşinizin, annenizin kapıyı açmasına şükredin. Ne bileyim, bi silkelenin. Kıymet bilin, sevin. Severken incitmeyin. Kibir yapıp gitmesine izin vermeyin. Gün gelir öyle kayıp gider ki o eller avuçlarınızdan, feleğiniz şaşar, dünyanız durur. Derler ki hayat devam ediyor. Ama öyle kolay olmaz. Önce gülüşünüz kaybolur, sonra neşeniz. Siz siz olun şu boş hayatta hiçbir şey için karalar bağlamayın. Özlemekten ciğeriniz solmadan soluğu yanında alın, sarılın… Teni hala sıcakken sarılın..."
Sql Server Cursor Kullanımı
Sql Server'da Cursor kullanımı genel olarak aşağıdaki gibidir.
DECLARE @NAME NVARCHAR(100)
DECLARE @EMAIL NVARCHAR(200)
DECLARE CRS_KISIEKLE CURSOR FOR
SELECT DISTINCT
ks.Ad
FROM
WL_SN_VW_COURSE as cs INNER JOIN
WL_SN_ST_COURSEMAP as cm ON cs.COURSEID=cm.COURSEID INNER JOIN
[IP].uysv2.dbo.OGROgrenciYazilma as st on st.FKDersPlanID=cm.COURSEKEY INNER JOIN
[IP].uysv2.dbo.OGRKimlik AS og ON st.FKOgrenciID=og.ID INNER JOIN
[IP].uysv2.[dbo].[Kisi] AS ks ON ks.ID=og.[FKKisiID] LEFT OUTER JOIN
[IP].uysv2.[dbo].[Nufus] AS nf ON nf.ID=ks.[FKNufusID] INNER JOIN
[IP].[uysv2].[dbo].[Birimler] AS dp ON og.[FKBolumPrBirimID]=dp.ID LEFT OUTER JOIN
WL_SN_ST_USER as us ON CAST(og.ID as nvarchar(50))=us.STUDENTKEY
WHERE cs.COURSEID='0901adc9-1660-437c-8790-e0a3bc2eaa49' AND og.EnumOgrDurum = 2
GROUP BY og.Numara,ks.TC,ks.Ad,ks.Soyad,nf.[ENUMCinsiyet],nf.[DogumTarihi],og.Numara,dp.ID,ks.TC,og.ID,KullaniciAdi
OPEN CRS_KISIEKLE
FETCH NEXT FROM CRS_KISIEKLE INTO @NAME
WHILE @@FETCH_STATUS =0
BEGIN
--------
INSERT INTO TESTTEST (NAME) VALUES(@NAME)
FETCH NEXT FROM CRS_KISIEKLE INTO @NAME
END
CLOSE CRS_KISIEKLE
DEALLOCATE CRS_KISIEKLE
9 Ekim 2013 Çarşamba
CKEditor Kontrolüne Dışarıdan File Upload ile Resim Ekleme
TestCKEditor' ün ckfinder eklentisi sayesinde dosya upload işlemleri yapılabiliyor fakat ckfinder ücretl iolduğundan upload işlemini jquery yardımıyla yaptık. Ekran görüntüsü,
27 Eylül 2013 Cuma
GridView' deki Seçili Alanları Silmek
C# Tüm CheckBox' ları Seçmek adresindeki yazının devamıdır.
şeklinde Gdirview kontrolü var. Bu kontrolün ITEMTEMPLATE içinde checkbox ve hiddenfield var. Sil butonunun codebehind kodları,
şeklinde Gdirview kontrolü var. Bu kontrolün ITEMTEMPLATE içinde checkbox ve hiddenfield var. Sil butonunun codebehind kodları,
7 Haziran 2013 Cuma
Deviantart
http://alidanaksoy.deviantart.com/gallery/
30 Mayıs 2013 Perşembe
Unfuddle ve Svn
(Kendime Not)
Aşamalar:
1- Unfuddle' dan bir hesap al
2- https://portallms.unfuddle.com/ şekinde bir domain verecek.
3- Repositories' ten new ile yeni bir proje oluştur.
4- Bir URL verecek, bunu kopyala.
5- PC de yeni bir klasör oluştur, sağ tıkla, SVN Checkout' u seç.
6- Buraya unfuddle' dan gelen kodu yapıştır ve işlemi tamamla.
7- Artık projen ortak kullanıma hazır :)
Aşamalar:
1- Unfuddle' dan bir hesap al
2- https://portallms.unfuddle.com/ şekinde bir domain verecek.
3- Repositories' ten new ile yeni bir proje oluştur.
4- Bir URL verecek, bunu kopyala.
5- PC de yeni bir klasör oluştur, sağ tıkla, SVN Checkout' u seç.
6- Buraya unfuddle' dan gelen kodu yapıştır ve işlemi tamamla.
7- Artık projen ortak kullanıma hazır :)
29 Nisan 2013 Pazartesi
ASP.NET ViewState Nedir
ViewState (Görüntü Durumu, Durum Yönetimi), verileri saklamak için default olarak kullanılan tekniktir. Sayfa post back olduğunda ve geri geldiğinde aynı sayfadaki değerlerin saklanması işlemini ViewState yapar. Kısacası sayfanın tarayıcıdan dönerkenki haline ulaşabilmemizi ve sayfa geri gönderilirken otomatikman tekrar bu bilgilerle gitmesini sağlar. Dolayısıyla sayfalar arası veri taşımaz.
Viewstate sayesinde sayfa kendiliğinden (button click olayı) yeniden yüklense dahi, viewstate' e atadığınız bilgi sayfadan ayrılmadığınız sürece kaybolmayacaktır. Bunu web sitelerdeki detay sayfalarında çok sık görüyoruz.
int id = Request.QueryString["id"].ToString;
kodu ile detayına gitmek istediğimiz elemanın id değerini alıyoruz. Fakat sayfada post olaylarında bu durum kayboluyor ve proje patlıyor. Bunu ViewState ile yaparsak id bilgisi sayfadan ayrılmadığımız sürece kaybolmayacaktır. Şimdi bu kodu ViewState üzerinden görelim:
public int id { get { return Convert.ToInt32(ViewState["id"]); } set { value = ViewState["id"] } }
26 Nisan 2013 Cuma
C# Tüm CheckBox' ları Seçmek
Hepimizin mail sayfalarında gördüğü üzere tek tıkla tüm mailleri seçip silebiliyoruz. Şimdi bu tek tıkla tüm checkboxları seçme işlemini görelim. Sayfada belirsiz sayıda checkbox olsun. Biz bunları foreach döngüsü ile tek tek bulacağız.
Yapımız yukarıdaki gibi. Ben Tümünü Seç' e tıkladığım zaman sayfada varolan dört tane checkbox' ın da seçili hale gelmesini istiyorum. Bunun için önce Tümünü Seç checkbox' ının koduna bakalım:
<asp:CheckBox ID="chckAll" runat="server" Text="Tümünü Seç" AutoPostBack="true" OnCheckedChanged="chckAll_CheckedChanged"/>
AutoPostBack özelliği checbox' ı işaretlediğimiz anda başka hiçbir şey yapmadan bağladığımız eventin tetiklenmesini sağlayacak.
OnCheckedChanged eventi ise checkbox seçili hale gelince çalışacak kodları barındırır. Şimdi bu kodlara gelelim;
protected void chckAll_CheckedChanged(object sender, EventArgs e) { foreach (Control chck in Panel1.Controls) { if (chck is CheckBox) { if ((chck as CheckBox).Checked == false) { (chck as CheckBox).Checked = true; } } } }
Önce foreach ile tek tek gelen kontrollerin bir checkbox olup olmadığına baktık.
Daha sonra seçilen kontrölün checkbox olduğunu doğrulamak için is operatörünü kullandık.
Son olarak da as operatörü ile checkboz olduğuna karar verdiğimiz kontrole atama yaptık.
25 Nisan 2013 Perşembe
C# is ve as Operatörleri
is operatörü : Bir değişkenin tipinin dönüşüm yapmak istediğimiz tiple is ile karşılaştırarak çevrimin doğru olup olmayacağını karşılaştırabiliriz. Yani is ile boolean bir değer elde edilir. is anahtar sözcüğü değişken tipinin karşılaştırma tipine bakarak bize o mu değil mi bilgisini vererek tip dönüşümlerinde fayda sağlamaktadır. is sadece tanımlı tipler üzerinde çalışır,i yani biz bir class tanımlayıp bunun tipi hakkında bilgi almak istiyorsak is bize bu konuda yardımcı olamaz. YANİ İS CONTROL EDER
int i = 50;
bool b = i is string; // b false olur
as operatörü : Uygun türler arasında tür dönüşümünü sağlar.Daha önce is sadece tanımlı tipler üzerinde çalıştığını. Yani biz bir class tanımladıysak ve bunun tipi hakkında bilgi almak istiyorsak is bize bu konuda yardımcı olamayacağını söylemiştik. Bu durumda devreye as anahtar kelimesi devreye girer. is operotoruyle çok benzerdi fakat is operatoru boolean bir değer döndürürken as operatoru hedef tipin referansını döndürür. Eğer dönüşüm imkansız ise null değeri döndürür. YANİ AS ATAMA YAPAR
object i = "50";
string s = i as string;
object i = "50";
string s = i as string;
C# Dictionary Sınıfı
System.Collections.Generic sınıfına ait bir sınıftır. İçerisindeki değerlerin anahtar yardımıyla saklandığı bir koleksiyon türüdür. Dictionary içerisindeki anahtarların türü belirtilmelidir. her anahtar birbirinden farklı olmalıdır.
Dictionary<string, string> isimler = new Dictionary<string, string>();
isimler.Add("Ali AKSOY", "3dsmax");
isimler.Add("Yakup BABALI", "AfterEffects");
isimler.Add("Metin ESKİLİ", "VisualStudio");
foreach (var isim in isimler)
{
Response.Write(isim);
}
Yukarıdaki kodda ekrana basma olayını;
Response.Write(eleman.Key + "=" + eleman.Value); şeklinde de yapabilirdik.
KeyValuePair özelliğini kullanarak da Dictionary içerisinde tanımlanmış olan anahtari değer ikilisine erişebiliriz. Bunun için foreach döngüsünü aşağıdaki gibi değiştirelim:
foreach(KeyValuePair<string, string> isim in isimler)
Dictionary içerisindeki herhangi bir değerin içeriğini...
isimler["Ali AKSOY"] = "Donanım"; şeklinde değiştirebiliriz.
ToList metodunu kullanarak oluşturdupumuz Dictionary' i List nesnesine dönüştürebiliriz.
Koleksiyonlar (Collections) 2
Generic Collections
İçerisinde saklanabilecek veri türüne karar verilebilen, aynı türdeki verilen bir arada saklandığı koleksiyon türleridir. System.Collections.Generic namespace' i altında bulunur. Non Generic koleksiyonlarda olduğu gibi veriler object rünüden olmadığı için boxing ve unboxing işlemleri yapılmaz. Dolayısıyla Generic Collection' lar daha performanslı çalışırlar. Bu koleksiyon altındaki sınıflar:
List<Değişken türü> isim = new List<Değişken türü>()
NOT: List sınıfı ArrayList sınıfının generic karşılığıdır. Hemen hemen tüm metodları ortaktır.
STACK(YIĞIN) SINIFI
Son giren ilk çıkar (LIFO) yöntemine göre çalışır. Yani yığın içerisine eklenen son elemana ilk olarak erişilebilirken, ilk olarak eklenen elemana en sonda erişilebilir.
İçerisinde saklanabilecek veri türüne karar verilebilen, aynı türdeki verilen bir arada saklandığı koleksiyon türleridir. System.Collections.Generic namespace' i altında bulunur. Non Generic koleksiyonlarda olduğu gibi veriler object rünüden olmadığı için boxing ve unboxing işlemleri yapılmaz. Dolayısıyla Generic Collection' lar daha performanslı çalışırlar. Bu koleksiyon altındaki sınıflar:
- List
- Stack
- Queue
- LinkedList
- Dictionary
- SortedDictionary
- SortedSet
- HashSet
LIST SINIFI
Veri türü belirtilerek dizi tanımlamak için kullanılır. Veri türü belirtildiğinden dolayı, içerisine aktarılan değerler, herhangi bir boxing (değer türünden bir değişkenin referans türünden bir değişkene aktarılması) işlemine tabi tutulmayacaktır. Dolayısı ile boxing işleminin gerçekleştirildiği ArrayList sınıfına göre daha performanslı çalışacaktır. Herhangi bir eleman sınırı konulmadan tanımlanır. List’ in boyutu içerisine eklenen eleman sayısına göre otomatik olarak belirlenir. System.Collections.Generic sınıfına ait bir sınıftır.
NOT: List sınıfı ArrayList sınıfının generic karşılığıdır. Hemen hemen tüm metodları ortaktır.
STACK(YIĞIN) SINIFI
Son giren ilk çıkar (LIFO) yöntemine göre çalışır. Yani yığın içerisine eklenen son elemana ilk olarak erişilebilirken, ilk olarak eklenen elemana en sonda erişilebilir.
Push metodu stack içerisine değer eklemek için kullanılır.
QUEUE(KUYRUK) SINIFI
FIFO yöntemine göre çalışır.
Stack<string> isimler = new Stack<string>();
isimler.Push("Ali");
isimler.Push("Veli");
isimler.Push("Metin");
isimler.Push("Murat");
foreach (string eleman in isimler)
{
Response.Write(eleman + "<br/>");
}
Bu kodu çalıştırdığımzda en son eklenen "Murat" değerinin en başta olduğunu görürüz. (yani reverse)
ElementAt özelliğini kullanrak stack içerisinde index numarası verilen bir elemanı görüntüleyebiliriz.
Peek metodu stack içerisinde en üst sırada bulunan elemanı verir.
Pop metodu stack içerisinden eleman silmek için kullanılır. Silinen eleman en üstte yer alan eleman olacaktır.
FIFO yöntemine göre çalışır.
Enqueue metodu queue içerisine değer eklemek için kullanılır. İlk eklenen değer en başa eklenecektir.
Peek metodu queue içerisinde en üst sırada bulunan elemanı verir.
Dequeue metodu ile en üstte yer alan eleman silinir.
24 Nisan 2013 Çarşamba
Koleksiyonlar (Collections) 1
Koleksiyonlar, System.Collections namespace' i altında yer alırlar, aynı türden verileri barındırabildiği gibi farklı tür verileri de içinde barındırabilir. Eleman sınırı konulmadan, herhangi bir eleman sayısı verilmeden tanımlanabilirler. Koleksiyon içinde tutulan değerler boxing ve unboxing işlemlerine tabi tutulurlar. 3 gruba ayrılırlar:
- Generic
- Non Generic
- Specialized
1.Non Generic Collections
Farklı türlerdeki verilerin bir arada saklanabildiği, içerisine aktarılan değerlerin, boxing(değer türünden referans türüne dönüşüm) işlemi ile object türüne dönüştürülerek tanımlandığı koleksiyon türleridir. System.Collections namespace' i içerisinde yer alırlar. Non Generic koleksiyon başlığı altında 3 sınıf var:
- ArrayList
- Hashtable
- SortedList
1.1 ArrayList Sınıfı
Koleksiyonlar, System.Collections namespace' i altında yer alırlar, aynı türden verileri barındırabildiği gibi farklı tür verileri de içinde barındırabilir. Eleman sınırı konulmadan, herhangi bir eleman sayısı verilmeden tanımlanabilirler. Koleksiyon içinde tutulan değerler boxing ve unboxing işlemlerine tabi tutulurlar. 3 gruba ayrılırlar:
- Generic
- Non Generic
- Specialized
1.1.1. Add Metodu
ArrayList içerisine eleman eklemek için kullanılır.ArrayList isimler = new ArrayList();
isimler.Add("Ali");
isimler.Add("Veli");
Response.Write(isimler[0]); // Ali
ArrayList içerisine farklı değişken tiplerinden olan elemanlar aynı anda eklenebilir.
ArrayList isimler = new ArrayList();
isimler.Add("Ali");
isimler.Add("a");
isimler.Add(123);
ArrayList içine eklediğimiz bir değeri daha sonra indeks numarası üzerinden değiştirebiliriz.
ArrayList isimler = new ArrayList();
isimler.Add("Ali");
isimler[0] = "Veli"; // Ali artık Veli oldu
1.1.2. Insert Metodu
Add metodu kullanılarak yapılan eklemelerde eklenen her eleman dizinin sonuna eklenir. Dizi içerisinde istenen bir yere eleman eklemek için Insert metodu kullanılır.
isimler.Add("Ali");
isimler.Add("a");
isimler.Add(123);
ArrayList içine eklediğimiz bir değeri daha sonra indeks numarası üzerinden değiştirebiliriz.
ArrayList isimler = new ArrayList();
isimler.Add("Ali");
isimler[0] = "Veli"; // Ali artık Veli oldu
1.1.2. Insert Metodu
Add metodu kullanılarak yapılan eklemelerde eklenen her eleman dizinin sonuna eklenir. Dizi içerisinde istenen bir yere eleman eklemek için Insert metodu kullanılır.
ArrayList isimler = new ArrayList();
isimler.Add("Ali");
isimler.Insert(0, "Veli"); // Artık ilk sırada Veli var, Ali' nin index numarası 1 oldu.
Ayrıca FixedSize Metodu ile sabit kapasiteli ArratList tanımlayabiliriz.
ArrayList isimler = new ArrayList();
isimler.Add("Ali");
isimler.Add("a");
isimler.Add(123);
ArrayList yeni_isimler = ArrayList.FixedSize(isimler);
yeni_isimler.Insert(0, "Deneme"); // Burası çalışmaz.
Fakat FixedSize olan bir ArrayList' te eleman değiştirme işlemini yapabiliriz.
1.1.3. Sort Metodu
Dizileri sıralama amacı ile kullanılır.
isimler.Add("Ali");
isimler.Add("a");
isimler.Add(123);
ArrayList yeni_isimler = ArrayList.FixedSize(isimler);
yeni_isimler.Insert(0, "Deneme"); // Burası çalışmaz.
Fakat FixedSize olan bir ArrayList' te eleman değiştirme işlemini yapabiliriz.
1.1.3. Sort Metodu
Dizileri sıralama amacı ile kullanılır.
ArrayList isimler = new ArrayList();
isimler.Add("Ali");
isimler.Add("Veli");
isimler.Add("Aksoy");
isimler.Sort();
1.1.4. Count Özelliği
Bir dizinin eleman sayısını bulmak için kullanılır.
ArrayList isimler = new ArrayList();
isimler.Add("Ali");
isimler.Add("Veli");
isimler.Add("Aksoy");
for (int i = 0; i <= isimler.Count - 1; i++)
{
Response.Write(isimler[i] + "<br/>");
}
Şimdi yukarıdaki kodda önemli bir nokta var. isimler.Count - 1 ifadesi.... isimler.Count bize 3 değerini döndürür. Yani dizimiz 3 elemanlıdır; Ali, Veli, Aksoy. Fakat biz i değişkeni ile dizimizin index numaralarını alacağız. Index 0' dan başladığı için i en büyük 2 olabilir. Biz isimler.Count deseydik program hata verecekti, çünkü index numarası 3' e eşit olan bir eleman yok.
1.1.5. Remove Metodu
Dizi içerisinden eleman silmek için kullanılır.
isimler.Remove("Ali");
1.1.6. RemoveAt Metodu
Dizi içerisinden index değeri belirtilen elemanı silmek için kullanılır.
isimler.RemoveAt(isimler.Count - 1); // index değeri 2 olan Aksoy elemanını siler.
1.1.7. Clear Metodu
Dizi içerisindeki elemanların hepsini silmek için kullanılır.
isimler.Clear();
1.1.8. Reverse Metodu
Diziyi tersine çevirmek için kullanılır. Yani çıktı Ali, Veli, Aksoy yerine; Aksoy, Veli, Ali olur.
1.1.9. GetRange Metodu
Bir dizinin belirtilen kısmını geriye döndüren bir metoddur.
Dizi_adı.GetRange(index, adet);
index : dizinin başlangıç değerini beliritir.
adet : Dizinin başlanıç değerinden itibaren kaç adet elemanın alınacağını beliritir.
ArrayList isimler = new ArrayList();
isimler.Add("Ali");
isimler.Add("Veli");
isimler.Add("Aksoy");
ArrayList digerisimler = isimler.GetRange(0, 2);
foreach (string eleman in digerisimler)
{
Response.Write(eleman + "<br/>");
}
Yukarıdaki kod bize Ali, Veli sonucunu verir. (ilk indexten başla ve iki adet eleman al)
1.1.10. AddRange Metodu
Bir diziye belirtilen başka bir diziyi eklemek için kullanılır.
ArrayList isimler = new ArrayList();
isimler.Add("Ali");
isimler.Add("Veli");
isimler.Add("Aksoy");
ArrayList digerisimler = new ArrayList();
isimler.Add("li");
isimler.Add("eli");
isimler.Add("soy");
diller.AddRange(digerdiller);
foreach(string eleman in diller)
{
Response.Write(eleman);
}
1.1.11. InsertRange Metodu
Belirtilen bir diziyi, belirtilen index numarasından başlayarak başka bir diziye eklemek için kullanılan metoddur.
HedefDizi.InsertRange(index, EklenecekDizi);
1.1.12. RemoveRange Metodu
Belirtilen index numarasından itibaren belirtilen sayıdaki elemanı diziden silmek için kullanılan metoddur.
DiziAdı.RemoveRange(index, adet);
System.Collections sınıfı altında yer alır, içerisindeki değerleri index numarasıyla değil de, anahtar yardımıyla saklar. Hashtable içerisindeki anahtar ve değerlere ICollections arayüzünü kullanarak erişebiliriz.1.2. HashTable Sınıfı
Hashtable isimler = new Hashtable();
isimler.Add("A", "Ali AKSOY");
isimler.Add("B", "Burak GÖL");
isimler.Add("Y", "Yakup BABALI");
ICollection degerler = isimler.Values;
foreach (var deger in degerler)
{
Response.Write(deger + "<br/>");
}
Bu kod sonucunda ekranda elemanların Value değerleri tek tek yazdırılır. ICollection ile elemanların key değerlerinde ulaşmak isteseydik;
ICollection degerler = isimler.Keys; yazacaktık.
ICollection ile sadece key veya sadece value değerlerini tutabiliyoruz. Bir de DictionaryEntry var. DictionaryEntry sayesinde hem key hem de value değerlerine aynı anda erişebiliyoruz. Şimdi bunu görelim:
Hashtable isimler = new Hashtable();
isimler.Add("A", "Ali AKSOY");
isimler.Add("B", "Burak GÖL");
isimler.Add("Y", "Yakup BABALI");
foreach(DictionaryEntry eleman in isimler)
{
Response.Write(eleman.Key + "=" + eleman.Value);
}
Hashtable içerisinde bir anahtar ya da değerin mevcut olup olmadığını belirlemek için ContainsKey ve ContainsValue metodları kullanılabilir. Bu metodlar geriye boolean değer döndürür.
isimler.ContainsValue(aranan)
1.2. SortedList Sınıfı
Elemanlarına erişimin hem index numaraları hem de anahtar yardımıyla yapılabildiği koelksiyon türüdür. İçerisindeki değerleri sıralı olarak saklar.
IndexOfKey metodunu kullanarak, anahtar ismini verdiğimiz bir elemanın index numarasını elde edebiliriz.
isimler.IndexOfKey("A");
IndexOfValue ile değer ismini verdiğimiz elemanın index numarasını öğrenebiliriz.
GetKey metodunu kullanarak index değerini belirttiğimiz bir elemanın anahtarını elde edebiliriz. Örneğin 2 nolu index değerine sahip anahtarı elde etmek için;
isimler.GetKey(2);
GetByIndex metodunu kullanarak index değerini belirttiğimiz bir elemanın değerini elde edebiliriz.
Diziler (Arrays)
Aynı türdeki verilerin sıralanarak gruplandırılmasında kullanılan yapılardır. Dizilerin eleman sayıları sabit olarak belirlenmelidir, tanımlanmış olan eleman sayısı daha sonradan değiştirilmek istenirse Array.Resize metodu ile değiştirilebilir.
Diziler, System.Array namespace' i içerisinde yer alır. Dizilerin eleman sayıları sabit ve dizi içerisine eklenen elemanlar herhangi bir dönüştürme işlemine (boxing ve unboxing) tabi tutulmadığı için Koleksiyonlara göre daha hızlıdır.
Diziler de aslında bir koleksiyondur. Ancak aynı türdeki verileri saklamada kullanılan bir koleksiyondur. Diziler referans tipinden olmakla beraber, hem değer tipinde hem de referans tipinden veriler dizi içerisinde saklanabilir.
int[] no = new int[10];
string[] ad = {"Ali", "Veli"};
char[] karakter = {'?', '!'};
Dizi değişkenlerinde kullanılan bazı metotlar
CreateInstance Metodu
Yeni bir diziyi, değişken tipini ve eleman sayısını belirleyerek tanımlamak için kullanılan metoddur.
Array.CreateInstance(değişken türü, eleman sayısı, boyut);
Array yenidizi = Array.CreateInstance(typeof(string), 3);
IsArray Metodu
Bir değişkenin dizi değişkeni olup olmadığını anlamak için kullanılan metoddur. Geriye boolean değer döndürür. (true/false)
string[] okul = {"Fen","Anadolu","Meslek"};
Type tip;
tip = okul.GetType();
Response.Write(tip.IsArray);
SetValue ve GetValue Metodu
Dizi elemankarına değer atamak için kullanılır.
Array ad = Array.CreateInstance(typeof(string), 3);
ad.SetValue("Ali AKSOY", 0);
ad.SetValue("VeliAKSOY", 1);
ad.SetValue("Aa AKSOY", 2);
Response.Write(ad.GetValue(2)); // Aa Aksoy
GetValue() metodu dizi içerisindeki elemanlara ulaşmak için kullanılır.
Join Metodu
Dizi içerisindeki değerlerin hepsini bir string değişkene, belirtilen ayırıcı karakter ile aktaran metoddur.
string[] okul = {"Fen","Anadolu","Meslek"};
Type tip;
tip = okul.GetType();
Response.Write(tip.IsArray);
SetValue ve GetValue Metodu
Dizi elemankarına değer atamak için kullanılır.
Array ad = Array.CreateInstance(typeof(string), 3);
ad.SetValue("Ali AKSOY", 0);
ad.SetValue("VeliAKSOY", 1);
ad.SetValue("Aa AKSOY", 2);
Response.Write(ad.GetValue(2)); // Aa Aksoy
GetValue() metodu dizi içerisindeki elemanlara ulaşmak için kullanılır.
Join Metodu
Dizi içerisindeki değerlerin hepsini bir string değişkene, belirtilen ayırıcı karakter ile aktaran metoddur.