Linq Select ve Where İşlemleri


Bir önceki yazıda Linq – Entity Framework ile select ve where konularına giriş yapmıştık. Bu yazıda da Entity Framework kısmını çıkarıp Linq select ve where konularına ufak bir giriş yapacağız.

Geriye bir şey döndürmeyen sadece örneğimizin çalışabilmesi için hazırladığım GetPeople adında bir methodumuz var. Her şeyin net olabilmesi için tüm değişkenleri ve sınıfları burada tanımladım.

Yukarıdan aşağıya doğru bir göz atalım isterseniz. İlk iki satırda Connection ve Person tablosunu getirecek Query oluşturduğumuzu göreceksiniz. Sonrasında SQL bağlantımızı sağlıyoruz, SqlCommand ile sorgumuzu çekiyor ve sonucunu SqlDataAdapter‘ e aktarıyoruz en sonunda da sorgu sonucunu ile DataTable içerisini dolduryoruz.

 static void GetPeople()
        {
            string connectionString = @"Data Source=.\sqlexpress;Initial Catalog=AdventureWorks2012;Integrated Security=true";
            string query = "Select * from Person.Person";

            using (SqlConnection con = new SqlConnection(connectionString))
            {
                if (con.State != ConnectionState.Open)
                    con.Open();

                var cmd=new SqlCommand(query,con);
                var da = new SqlDataAdapter(cmd);
                var dt = new DataTable();
                da.Fill(dt);

                var result = dt.AsEnumerable().ToList();
            }

linqSelect

ylelikle Person tablosundaki tüm kayıtları datatable içerisine aktarmış olduk. Burada dt.AsEnumerable() dediğimiz kısım önemli  AsEnumerable extension bir method ve gezilebilir, sayılabilir özelliklerini içermekte. Minik bir örnek vermek gerekirse DataTable normalde Count özelliği içermemekte yani “dt.Count” deme şansımız normal şartlarda bulunmuyor ancak dt sonuna .AsEnumerable extension methodunu eklediğimizde (dt.AsEnumerable().Count()) Count özelliğini kullanabilir duruma geliyoruz. Tabii Count haricinde farklı method larıda kullanabilir durumda oluyoruz. Burada minik bir detay projemizin Referance ları arasına “System.Data.DataSetExtensions” eklenmiş olması gerekmekte.  Artık tablodaki toplam kayıt sayısını biliyoruz ve List olarak kayıtları alabiliyoruz.

Şimdi gelelim Where şartı ile gelen 19972 kayıt arasında FirstName’ i Martin olan çalışanları listelemeye.

        static void GetPeople()
        {
            string connectionString = @"Data Source=.\sqlexpress;Initial Catalog=AdventureWorks2012;Integrated Security=true";
            string query = "Select * from Person.Person";

            using (SqlConnection con = new SqlConnection(connectionString))
            {
                if (con.State != ConnectionState.Open)
                    con.Open();

                var cmd = new SqlCommand(query, con);
                var da = new SqlDataAdapter(cmd);
                var dt = new DataTable();
                da.Fill(dt);

                var result = dt.AsEnumerable().Where(e => e.Field<string>("FirstName") == "Martin").ToList();

                for (int i = 0; i < result.Count; i++)
                    Console.WriteLine(result[i].Field<int>("BusinessEntityID")+" "+result[i].Field<string>("FirstName") + " " + result[i].Field<string>("LastName"));

                Console.Write(result.Count.ToString()+" kayıt");
            }
        }

linqWhere
personList
Where koşulu içerisinde belirttiğim Field ve şarta eşit değerleri böylelikle listelemiş olduk. Artık elimizde 19972 yerine 24 adet çalışan bulunmakta. Daha önce SQL’ de query yazmış herhangi birisinin bu satırı anlayacağından eminim. İhtiyacı olana faydalı olması umuduyla, iyi çalışmalar.

Not: Örnekleri isteyerek yalın tuttum.

Print Friendly, PDF & Email

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir