Aşağıdaki kodu çalıştırdığımızda Console’a “Bir”, “İki”, “Üç” yazdığını görüyoruz.
Sizce neden “Dört” elemanı yazılmıyor?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BuKoddaNeYanlisVar
{
class Program
{
private List<string> _items = new List<string>();
public List<string> Items
{
get { return _items.ToList(); }
set { _items = value; }
}
static void Main(string[] args)
{
Program program = new Program();
program.Items = new List<string> { "Bir", "İki", "Üç" };
program.Items.Add("Dört");
foreach (var item in program.Items)
Console.WriteLine(item);
Console.ReadLine();
}
}
}
Aşağıdaki kod parçasını çalıştıralım. Sifir isimli değişkenin değerine baktığımızda 0 olduğunu görüyoruz.
List arrListe = new List(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
int Sifir = arrListe.Find(
delegate(int i) {
return i == 0;
}
);
Listede 0 değeri yok!. Neden sonuç 0 dönüyor? Bu kodu nasıl düzeltebiliriz?
Database’de şu scripti çalıştıralım;
CREATE TABLE T_PERSONEL
(
ADSOYAD VARCHAR(50),
DOGUM_TARIHI SMALLDATETIME
)
INSERT INTO T_PERSONEL VALUES ('Engin POLAT', '1981-01-12')
INSERT INTO T_PERSONEL VALUES ('Emre ERKAN', '1979-03-14')
INSERT INTO T_PERSONEL VALUES ('Ozan ÇAĞLARGİL', '1982-09-27')
INSERT INTO T_PERSONEL VALUES ('Fatih DURGUT', '1978-06-23')
INSERT INTO T_PERSONEL VALUES ('Burhan İNEGÖL', '1980-11-08')
Aşağıdaki stored procedure’i yazalım.
CREATE PROCEDURE PR_PERSONEL_LISTE
(
@SIRALAMA INT
)
AS
BEGIN
SELECT ADSOYAD, DOGUM_TARIHI FROM T_PERSONEL
ORDER BY
CASE @SIRALAMA
WHEN 1 THEN DOGUM_TARIHI
WHEN 2 THEN ADSOYAD
END
END
Bu procedure’ü 1 parametresi vererek çalıştırıyoruz, ve beklediğimiz sonucu alamıyoruz.
Nerede hata yaptık? (İpucu; parametre olarak 2 vermeyi deneyin)
Yorumlarınızı bekliyorum…