none
C# ve MS SQL Server 2008 R2'de Tablodan süzme işlemi yaptıktan sonra süzülmüş veri içinden 2. kez süzme işlemi nasıl yapılır ? RRS feed

  • Soru

  • C# ve MS SQL Server 2008 R2'de Tablodan süzme işlemi yaptıktan sonra süzülmüş veri içinden 2. kez süzme işlemi nasıl yapılır ?

    Sorumun daha açıklayıcı olması için bir örnek ile açıklayayım ;

      ID             Adı                  Şehir

      1             ahmet              Ankara

      2             mehmet           Adana

      3             ayşe                izmir

      4             ahmet              istanbul

    2 sütun ve 4 elemandan oluşan bir tablomuz olsun ve önce ismi ahmet olanları seçtirip sonra seçilmiş olan 1 ve 4 nolu seçenekler içinden ankara şehrini seçtirelim yani sonuçta  1  ahmet  Ankara seçeneğini seçmiş olalım...

    Bu seçimi oluşturacak SQL kodunu yazarsanız sevinirim...

    24 Ekim 2013 Perşembe 19:47

Yanıtlar

  • C#

    var kisiler = db.Kisiler; // hepsi
    var suz1 = kisiler.Where( k => k.Adi == "Ahmet" );
    var suz2 = suz1.Where( k => k.Sehir == "Ankara" );
    




    • Yanıt Olarak İşaretleyen Burak ORDU 30 Ekim 2013 Çarşamba 09:20
    24 Ekim 2013 Perşembe 21:15
  • Merhabalar,

    Aşağıdaki örnek kod işine yarayacaktır, deneyebilir misin?

    dataTable1.Select("ID=1 AND Adı='Ahmet'");

    İyi çalışmalar dilerim,


    Software Engineer http://www.yazilimdilleri.net http://www.ugurkizmaz.com

    • Yanıt Olarak İşaretleyen Burak ORDU 30 Ekim 2013 Çarşamba 09:20
    24 Ekim 2013 Perşembe 20:23
  • Sorunumu çözdüm...Başka birilerinin işine yarabileceğini düşünerek ürettiğim çözümü paylaşmak istedim...Emek verip yardımcı olmaya çalışan herkese teşekkür ederim...

    deneme adında yukarıdaki gibi bir tablomuz, button1 adında 1 adet butonumuz comboBox1 ve  comboBox2 adında 2 adet comboBox' ımız, databese'de deneme adli tabloda  adi ve sehir adında 2 sütunumuz olduğunu düşünürsek ;

    2 comboBox ve 1 buton için 4 ihtimal vardır;  

    1.      1. comboBox seçilip butona basılır.

    2.      2. comboBox seçilip butona basılır. 

    3.      1. comboBox ve 2. comboBox birlikte seçilip butona basılır.

    4.  her iki comboBox 'da seçilmeden butona basılır.

    bu 4 durum için oluşturduğum kodlar aşşağıdadır... ComboBox sayısının artırılması durumunda aynı mantıkla ihtimal sayısına göre kod yazılabilir... ( Çok çok fazla sayıda comboBox olması halinde nasıl yapılırdı açıkcası bir fikrim yok bunun daha kolay bir yolunu türetebilen var ise yazarsa sevinirim.)

    private Void button1_Click ( object sender EventArgs e )

    if ( comboBox1.Text == "" & comboBox2.Text == "" )

    {

    dataset = new DataSet () ;     // dataset nesnesi oluşturuldu.

    SqlDataAdapter adapter = new SqlDataAdapter ( " select*from deneme " , baglantim ) ;

    adaptor.Fiil (dataset, "deneme" ) ; // dataadapterdeki bilgiler dataset'e aktarıldı.

    dataGridView1.Data Source = dataset.Tables [0] ; // tablo  dataGridView1' de görüntülendi. 

    }

    if ( comboBox1.Text != "" & comboBox2.Text == "" )

    {

    dataset = new DataSet () ;     // dataset nesnesi oluşturuldu.

    SqlDataAdapter adapter = new SqlDataAdapter ( " select*from deneme where adi like " ' + comboBox1.Text + ' "   " , baglantim ) ;

    adaptor.Fiil (dataset, "deneme" ) ; // dataadapterdeki bilgiler dataset'e aktarıldı.

    dataGridView1.Data Source = dataset.Tables [0] ; // tablo  dataGridView1' de görüntülendi. 

    }

    if ( comboBox1.Text == "" & comboBox2.Text != "" )

    {

    dataset = new DataSet () ;     // dataset nesnesi oluşturuldu.

    SqlDataAdapter adapter = new SqlDataAdapter ( " select*from deneme where sehir like " ' + comboBox2.Text + ' "   " , baglantim ) ;

    adaptor.Fiil (dataset, "deneme" ) ; // dataadapterdeki bilgiler dataset'e aktarıldı.

    dataGridView1.Data Source = dataset.Tables [0] ; // tablo  dataGridView1' de görüntülendi. 

    }

    if ( comboBox1.Text != "" & comboBox2.Text != "" )

    {

    dataset = new DataSet () ;     // dataset nesnesi oluşturuldu.

    SqlDataAdapter adapter = new SqlDataAdapter ( " select*from deneme where  adi like " ' + comboBox1.Text + ' " and sehir like " ' + comboBox2.Text + ' "   " , baglantim ) ;

    adaptor.Fiil (dataset, "deneme" ) ; // dataadapterdeki bilgiler dataset'e aktarıldı.

    dataGridView1.Data Source = dataset.Tables [0] ; // tablo  dataGridView1' de görüntülendi. 

    }

    }
    • Düzenleyen thedoors79 28 Ekim 2013 Pazartesi 10:49
    • Yanıt Olarak İşaretleyen Burak ORDU 30 Ekim 2013 Çarşamba 09:19
    28 Ekim 2013 Pazartesi 10:47

Tüm Yanıtlar

  • Merhabalar,

    Aşağıdaki örnek kod işine yarayacaktır, deneyebilir misin?

    dataTable1.Select("ID=1 AND Adı='Ahmet'");

    İyi çalışmalar dilerim,


    Software Engineer http://www.yazilimdilleri.net http://www.ugurkizmaz.com

    • Yanıt Olarak İşaretleyen Burak ORDU 30 Ekim 2013 Çarşamba 09:20
    24 Ekim 2013 Perşembe 20:23
  • Teşekkürler fakat ben yeterince iyi anlatamadım sanırım...Anlatmak istediğim şu;

    datagridview'da yukarıdaki 4 elemanlı tablonun görüntülendiğini , 2 adet combobox ımız ve 1 adet süz butonumuz olduğunu düşünün 1. combobox'ta ahmet seçip süz butonuna bastığımızda ;

      ID             Adı                  Şehir

      1             ahmet              Ankara

      4             ahmet              istanbul

     sonucunu görüntülensin datagridview'da ve  2. combobox'ımızdan Ankara seçeneğini seçip süz butonuna bastığımızda ise ;

      ID             Adı                  Şehir

      1             ahmet              Ankara

    sonucu datagridview'da görüntülensin istiyorum...

    Bu 2 kez (ya da daha fazla kez ) yapılan süzme işlemini sağlayacak koda ihtiyacım var...Şimdiden teşekkür ederim ilginiz için...

    24 Ekim 2013 Perşembe 20:37
  • C#

    var kisiler = db.Kisiler; // hepsi
    var suz1 = kisiler.Where( k => k.Adi == "Ahmet" );
    var suz2 = suz1.Where( k => k.Sehir == "Ankara" );
    




    • Yanıt Olarak İşaretleyen Burak ORDU 30 Ekim 2013 Çarşamba 09:20
    24 Ekim 2013 Perşembe 21:15
  • Sorunumu çözdüm...Başka birilerinin işine yarabileceğini düşünerek ürettiğim çözümü paylaşmak istedim...Emek verip yardımcı olmaya çalışan herkese teşekkür ederim...

    deneme adında yukarıdaki gibi bir tablomuz, button1 adında 1 adet butonumuz comboBox1 ve  comboBox2 adında 2 adet comboBox' ımız, databese'de deneme adli tabloda  adi ve sehir adında 2 sütunumuz olduğunu düşünürsek ;

    2 comboBox ve 1 buton için 4 ihtimal vardır;  

    1.      1. comboBox seçilip butona basılır.

    2.      2. comboBox seçilip butona basılır. 

    3.      1. comboBox ve 2. comboBox birlikte seçilip butona basılır.

    4.  her iki comboBox 'da seçilmeden butona basılır.

    bu 4 durum için oluşturduğum kodlar aşşağıdadır... ComboBox sayısının artırılması durumunda aynı mantıkla ihtimal sayısına göre kod yazılabilir... ( Çok çok fazla sayıda comboBox olması halinde nasıl yapılırdı açıkcası bir fikrim yok bunun daha kolay bir yolunu türetebilen var ise yazarsa sevinirim.)

    private Void button1_Click ( object sender EventArgs e )

    if ( comboBox1.Text == "" & comboBox2.Text == "" )

    {

    dataset = new DataSet () ;     // dataset nesnesi oluşturuldu.

    SqlDataAdapter adapter = new SqlDataAdapter ( " select*from deneme " , baglantim ) ;

    adaptor.Fiil (dataset, "deneme" ) ; // dataadapterdeki bilgiler dataset'e aktarıldı.

    dataGridView1.Data Source = dataset.Tables [0] ; // tablo  dataGridView1' de görüntülendi. 

    }

    if ( comboBox1.Text != "" & comboBox2.Text == "" )

    {

    dataset = new DataSet () ;     // dataset nesnesi oluşturuldu.

    SqlDataAdapter adapter = new SqlDataAdapter ( " select*from deneme where adi like " ' + comboBox1.Text + ' "   " , baglantim ) ;

    adaptor.Fiil (dataset, "deneme" ) ; // dataadapterdeki bilgiler dataset'e aktarıldı.

    dataGridView1.Data Source = dataset.Tables [0] ; // tablo  dataGridView1' de görüntülendi. 

    }

    if ( comboBox1.Text == "" & comboBox2.Text != "" )

    {

    dataset = new DataSet () ;     // dataset nesnesi oluşturuldu.

    SqlDataAdapter adapter = new SqlDataAdapter ( " select*from deneme where sehir like " ' + comboBox2.Text + ' "   " , baglantim ) ;

    adaptor.Fiil (dataset, "deneme" ) ; // dataadapterdeki bilgiler dataset'e aktarıldı.

    dataGridView1.Data Source = dataset.Tables [0] ; // tablo  dataGridView1' de görüntülendi. 

    }

    if ( comboBox1.Text != "" & comboBox2.Text != "" )

    {

    dataset = new DataSet () ;     // dataset nesnesi oluşturuldu.

    SqlDataAdapter adapter = new SqlDataAdapter ( " select*from deneme where  adi like " ' + comboBox1.Text + ' " and sehir like " ' + comboBox2.Text + ' "   " , baglantim ) ;

    adaptor.Fiil (dataset, "deneme" ) ; // dataadapterdeki bilgiler dataset'e aktarıldı.

    dataGridView1.Data Source = dataset.Tables [0] ; // tablo  dataGridView1' de görüntülendi. 

    }

    }
    • Düzenleyen thedoors79 28 Ekim 2013 Pazartesi 10:49
    • Yanıt Olarak İşaretleyen Burak ORDU 30 Ekim 2013 Çarşamba 09:19
    28 Ekim 2013 Pazartesi 10:47
  • Kotu bir cozum olmus, asla boyle SQL kullanma, parametre kullan. Cozumler sana zaten verilmisti sanirim okumadin.
    28 Ekim 2013 Pazartesi 11:12
  • Merhaba...

    Yazdığınız çözümü okudum fakat anlamadım...Bu işte yeniyim...Kamuda memurum ve aynı zamanda uzaktan eğitimle Bilgisayar Mühendisliği okuyorum yazılım konusunda herhangi bir geçmişim de yok, aldığım uygulama dersini geçebilmek için İnternet te http://csharpvideoluders.com sitesindeki videoları takip ederek c# ve MsSQL Server 2008r2 kullanarak Kütüphane Otomasyon Programı yapmaya çalıştım ve  dersi geçtim...Amacım ders geçmek okul bitirmek değil bu işi öğrenip eli yüzü düzgün yazılımlar oluşturabilmek fakat neyi nasıl yapacağımı neye konsantre olup nasıl bir yol izleyeceğimi kestirmekte güçlük çekiyorum...Takdir edersiniz ki bu alan bir derya ve bu deryada küçücük bir kayıkla yol alıyorum...Ve nasıl seyredeceğime dair çok fazla fikrim yok...Tecrübenize binaen bana genel anlamda kaynak, yöntem , method konusunda tavsiyelerde bulunabilirseniz çok sevinirim....

    Dönelim konumuza;

    var kisiler = db.Kisiler; // hepsi
    var suz1 = kisiler.Where( k => k.Adi == "Ahmet" );
    var suz2 = suz1.Where( k => k.Sehir == "Ankara" );

    1.'si " var " nedir ne iş yapar ?

    2.' si ben bunlara bakınca anladığımı söyleyeyim doğru yanlış siz bir yorum getirin lütfen ;

    Ben şöyle anladım;

    1. satırda database kısmındaki Kişiler adlı tablomuzla kişiler adlı nesnemizi (buna nesne mi denir onu da net bilmiyorum) ilişkilendiriyoruz.

    2. satırda suz1 adında bir işlem tanımlıyoruz...Az önceki oluşturduğumuz tablomuza bağlı nesne içinden k operatörü ile adı "Ahmet" olan kayıtları getirtiyoruz.

    3. satırda ise suz2 adlı işlem ile adı ahmet olan kayıtların içerisinden "Ankara" şehrindeki kayıtları seçtiriyoruz.

    mesela ben adı ve şehir için 2 adet comboBox kullanacaksam " Ahmet yerine comboBox1" , "Ankara yerine comboBox2" yazarsam o comboBox'lar içinde seçili olana göre bu işlemleri yapacak sanırım...

    yazdığınız kodları kullanmayı denedim ama başarılı olamadım sanırım parametreleri kendi yazdıklarıma uyarlamayı beceremedim...

     

    30 Ekim 2013 Çarşamba 09:35
  • Anliyorum. Bu konular hakikaten derya deniz. Birisinin kullandigini digeri ya hic kullanmiyor ya da baska sekilde kullaniyor. Veri tabani derseniz, o basli basina ayri bir konu. SQL server (ya da Oracle, MySQL ... gibi bir SQL serisi) kullanirsaniz ve dogrudan SQL Server tablolarini filan kendiniz yonetmeye kalkarsaniz, o apayri bir sorumluluk (T-SQL + database yonetimi ki, her ikisinin sertifasyon sinavlari bile ayri). Ne yazik ki, genelde yazilimcilar her zaman sadece isin bir kismiyla ugrasamiyor ve farkli kimliklere burunerek isi yapmalari gerekiyor genelde (Ekran dizayni icin grafik artistliginden tutun da, SQL server yonetimine kadar).

    Simdi benim bazi onerilerim olacak ama bunlari daha cok "benim yogurt yeme seklim" olarak algilaman lazim. Ben veri tabani programciligindan geliyorum temel olarak ve hala veri tabani programlari yaziyorum. O nedenle oldukca iyi bir SQL alt yapim var diyebiliriz. Ancak is C# olunca, ben klasik olarak kullanilan DataSet ve DataTable'lardan yana degilim. Gec de olsa dilin kendisine sorgulama eklendi ve adina Linq ( Language INtegrated Query ) dendi. Ben veri tabani islerinde Linq kullanmaktan yanayim (bazi ozel databaseler disinda, cunku onlarda Linq'a benzer dogrudan destek var). Linq kullanilirsa, sen isine nesneler ile devam ediyorsun, yazdiklarini SQL'e cevirme isini Linq driverlari hallediyor. (Ben yillarin SQL yazari olmama ragmen, bazen kompleks SQL icin once Linq ile yazip, onun cevirdigi SQL'i aldigim oluyor). Burada ilk itiraz, performans oluyor genelde. Veri tabani islerinde performans dedin mi isin icine giren o kadar cok factor var ki, eger hepsini gecmissen ve hakikaten arada Linq oldugu icin yavas kaliyorsan o zaman Linq yerine dogrudan SQL'i de dusunmeye basla. Genel olarak Linq yavaslamani degil hizlanmani sagliyor. Linq'nun diger bir avantaji da dilin parcasi olmasi ve SQL bilmek yerine object query yani nesne sorgulama yapabilmen. Neyse bu kisim cok uzuyor. Yukarida yazdigim Linq kodu idi:

    var kisiler = db.Kisiler; // hepsi
    var suz1 = kisiler.Where( k => k.Adi == "Ahmet" );
    var suz2 = suz1.Where( k => k.Sehir == "Ankara" );
      

    Burada db senin databasein icin "DataContext". Onun tanimlandigi yeri pas gectim. Projene "Add"," new item", "C#\Data", "Linq To SQL Classes" secenekleriyle kendi databaseinden istedigin tablolari ekliyorsun. dbml uzantili bir dosya oluyor (en iyisi hemen kisa bir ornek video ekleyeyim):

     Basit Linq Ornegi

    Videoda:

    db.Log = Console.Out;

    satiri, Linq'nun SQL server'a gonderdigi SQL'i gormek icin. Dikkat edersen yazarken intellisense devreye giriyor ve SQL komutlarini string olarak yazip hata yapma sansin ortadan kalkiyor.

    Ilk once musteriler'e bakiyoruz, hepsi listeleniyor. suz1 ise sadece country = "USA" olanlari.

    Burada onemli olan noktalardan birisi:

    var musteriler = ...

    var suz1 = ...

    satirlari sorgulari sadece "tanimliyor" ama calistirmiyor. foreach ile ne zaman ki veriyi istiyoruz o zaman calisiyor. Bu nedenle bir Linq sorgusunu calistirmadan once ona bir suru Where, OrderBy ... ekleyebiliriz (ve ayni sorguyu defalarca kullanabiliriz, veri tabanindan o anki hali gelir - SqlCommand'i tekrar calistirmak gibi).

    Simdi basa yani:

    var kisiler = db.Kisiler; // hepsi
    var suz1 = kisiler.Where( k => k.Adi == "Ahmet" );
    var suz2 = suz1.Where( k => k.Sehir == "Ankara" );

    aciklamalarina donelim.

     var bir C# keywordu.

    int x = 1;
    string s = "merhaba";
    
    // yazmakla
    var x = 1;
    var s = "merhaba";

    yazmak ayni sey. Yani compiler sag taraftan, tipi kendisi cikarabiliyorsa var kullanabilirsin. var ile olusturulan degiskenkerin bazi ufak tefek kisitlamalari olsa da cogu yerde rahatlikla kullanabilirsin (C# 3.0 ve sonrasi). Bunun ozellikle faydasi, bazen compiler gerekli tipi senden iyi biliyor.  Mesela videodaki "musteriler" tipi:

    Table<Customer>

    benim dusunmeme gerek yoktu. var ile yazdiktan sonra mouseu uzerine goturursen VS sana tipini soyluyor.

    1. satirda yorumun cok dogru. kisiler bir degisken ve nesne (zaten C#'ta hersey bir nesne onun icin herseye nesne demek dahi dogru), Table<Kisi> seklinde bir yapisi olacak ve veri tabanindaki fiziksel Kisiler tablomuzu temsil ediyor.

    dbml dosyasini incelersen senin tablonun bir karsiligi class olarak yaratiliyor ve ona "model" deniyor. Basite indirgenmis sekliyle soyle bir class var:

    [Table(Name="Customers")]
    public class Customer
    {
       [Column(IsPrimaryKey=true)]
       public string CustomerId {get;set;}
       [Column]
       public string CompanyName {get;set;}
       [Column]
       public string ContactName {get;set;}
    // ...
    }

    Linq modellerinde konvansiyonel olarak kullanilan, model class adi tekil (tek bir kaydi temsil ediyor - Customer, Kisi gibi), tabloya isaret eden property ise cogul (tum kayitlari temsil ediyor - Customers, Kisiler gibi).

    Ilk satir sonucta SQL'de:

    Select * from Kisiler

    yazmak gibi. Iyi tarafi sana "enumerate" edilebilen bir nesne koleksiyonu olarak gelmesi (temelde IEnumerable - onun bir alt classi geliyor yaptigin ise gore).

    2. satir aslinda bir islem tanimlamiyor. Sadece Linq'nun sorgulari istedigin kadar ard arda ekleme ozelliginden faydalaniyoruz. Yani gene 1. satir gibi ama sadece sart ekliyor. Aslinda sen ayri ayri istedigin icin oyle yazdim (ve aslinda birazdan ayri ayri yazmanin nasil ise yarayabilecegi konusunda ornek verecegim). Yoksa tek satir soyle de olabilirdi:

    var kisiler = db.Kisiler.Where( k => k.Adi == "Ahmet" && k.Sehir == "Ankara" );
    
    // ya da
    var kisiler = db.Kisiler // C#'ta hepsini ayni satirda yazmak zorunda degilim
       .Where( k => k.Adi == "Ahmet" )
       .Where( k => k.Sehir == "Ankara" );
    
    

    Aslina bakarsan Linq'nun destekledigi bir baska syntax turu de SQL'e benziyor, yukaridaki su sekilde de yazilabilirdi:

    var kisiler = from k in db.Kisiler
     where k.Adi == "Ahmet" && k.Sehir == "Ankara"
     select k;

    (from ile baslamasinin nedeni intellisense destegi)

    3. 2. ile ayni sey. Burada "k" adini benim sectigim bir degisken ve enumerate ettigi kayitlardaki her bir kaydi temsil eden lokal degisken. DataSet'e benzer hayali kodla suna benziyor:

    List<Kisi> kisiler;
    for( int i=0; I < tablo.Rows.Count;i++) 
    {
    // Kisi tipinde bir local k degiskenine atayan
    // DataReader var gibi dusun
    
       Kisi k = new Kisi();
       k.Id = (int)tablo.Rows[i]["Id"];
       k.Adi = (string)tablo.Rows[i]["Adi"];
    
    // ...
       // Where
       if ( k.Adi == "Ahmet" and k.Sehir = "Ankara" )
       {
          kisiler.Add( k );
       }
    }   

    Simdi gelelim comboboxlara. Iceriklerini almak icin degisik ve basit yontemler var, o kismi atlayip iceriklerini string olarak aldigimizi farzedelim.

    string ad = null;
    string sehir = null;
    
    // combolardan ad ve sehir aliniyor. Kabaca:
    // if ( ... )
    // ad = "Ahmet"; // ya da null kaliyor
    // if ( ... )
    // sehir = "Ankara";
    
    // Buraya geldigimizde ad ve sehir null da olabilir, 
    // bir veya ikisinde de deger olabilir
    // iste Linq satirlarini ayri ayri yazmanin onemi
    // burada devreye giriyor
    
    // Bu sekilde kullanabilmek icin "var" dan 
    // feragat etmemiz gerekiyor (ya da daha sonra cast)
    
    IQueryable<Kisi> kisiler = db.Kisiler;
    
    if ( ad != null )
    {
     kisiler  = kisiler.Where( k => k.Ad == ad );
    } 
    
    if ( sehir != null )
    {
     kisiler = kisiler.Where( k => k.Sehir == sehir );
    }

    Boylece biraz if kontrolu ile her iki comboya da deger girilmesi ya da girilmemesi halinde calisan bir sorgumuz oldu. En sonda kisiler degiskenini bir DataGridView'un veya bir ListBox'in datasource'u yapabilirdik:

    dataGridView1.DataSource = kisiler.ToList();

    Yukaridaki Linq sorgusunun ayri ayri yapilabilmesi guzel olsa da daha da guzeli bunu su sekilde yazabilmemiz:

    string ad = null;
    string sehir = null;
    
    // combolardan atama ...
    
    var kisiler = db.Kisiler
                  .Where( 
                        ( ad == null || k.Ad = ad ) &&
                        ( sehir == null || k.Sehir = sehir )
                  );
    

    Linq boyle bir durumda her ikisi de veya yalnizca birisi null ise cok "akillica" davraniyor ve elle yazmak isteyecegin SQL'i yaratiyor (ornegin her ikisi de null ise "select * from kisiler" gibi yazip where eklemiyor bile).

    Umarim buraya kadar aciklayici olmustur. Eger Ingilizcen varsa ve Linq'ya biraz vakit ayirmayi dusunursen blogumda anlattim. Baslangic linki:

    http://cetinbasoz.wordpress.com/2009/02/03/new-horizons/

    Burada yazilanlari Emre arkadasimiz sagolsun Turkce'ye cevirdi. Onu da Linq forumunda bulabilirsin.

    Aslinda gunluk C# kodunda belki de farkinda olmayarak o kadar cok Linq kullaniliyor ki, onu database icin de kullanmamak yazik olur. Ornegin bu da Linq ama database'e degil:

    var uzantilar = ".cs,.vb".Split(',');
        
    var dosyalar = from f in new DirectoryInfo(@"d:\academy").GetFiles()
     where uzantilar.Contains(f.Extension.ToLower()) &&
           f.CreationTime.Year == 2012
     select f;

    30 Ekim 2013 Çarşamba 17:48
  • S.A. İyi günler benzer bi sıkıntı bende çekiyorum küçük bir projem var;

    bu kodları kendime uyarladım fakat çalıştıramadım;

    var kisiler = db.Kisiler; // hepsi
    var suz1 = kisiler.Where( k => k.Adi == "Ahmet" );
    var suz2 = suz1.Where( k => k.Sehir == "Ankara" );

    sqlserver 2012 database adı: stok_takip, tablo adı: ham kolon adları: pompa_adi, parca_adi

    C#2010 express Form1 , dataGridview1, textBox1, textBox2, button1

    ne yapmalıyın mümkünse yardımcı olabilirmisiniz.

    Form1 kodları;

    ----------------------------------

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            SqlConnection baglanti = new SqlConnection("Server=.;Database=stok_takip;

           Trusted_Connection=true;");
            SqlCommand komut = new SqlCommand();
            SqlDataAdapter adtr = new SqlDataAdapter();
            DataSet ds = new DataSet();
            void listele()
            {
                {
                    baglanti.Open();
                    SqlDataAdapter adtr = new SqlDataAdapter("select * from ham", baglanti);
                    adtr.Fill(ds, "ham");
                    dataGridView1.DataSource = ds.Tables["ham"];
                    dataGridView1.Columns[0].Visible = false;
                    dataGridView1.Columns[1].HeaderText = "Tarih";
                     dataGridView1.Columns[2].HeaderText = "Pompa Adı";
                    dataGridView1.Columns[3].HeaderText = "Parça Adı";
                 //   dataGridView1.Columns[4].HeaderText = "Malzeme Adı";
                //    dataGridView1.Columns[5].HeaderText = "Adet";
                //    dataGridView1.Columns[6].HeaderText = "Kg";
                //    dataGridView1.Columns[7].HeaderText = "Tedarikci";
                //    dataGridView1.Columns[8].HeaderText = "Açıklama";
                }
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                listele();
            }

            private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
            {
                var dataGridView1 = sender as DataGridView;
                var bgRowIdx = (e.RowIndex + 1).ToString();

                var centerFormat = new StringFormat()
                {
                    // right alignment might actually make more sense for numbers
                    Alignment = StringAlignment.Center,
                    LineAlignment = StringAlignment.Center
                };

                var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, dataGridView1.RowHeadersWidth, e.RowBounds.Height);
                e.Graphics.DrawString(bgRowIdx, this.Font, SystemBrushes.ControlText, headerBounds, centerFormat);
            }
            private void button1_Click(object sender, EventArgs e)
            {
               var kisiler = ham; //db.ham; // hepsi
               var suz1 = kisiler.Where(k => k.pompa_adi == "textBox1");
               var suz2 = suz1.Where(k => k.parca_adi == "textBox2");
                
                //alttaki kod tek txt de çalışan kod
                // BindingSource bs = new BindingSource(); bs.DataSource = dataGridView1.DataSource; bs.Filter = "[pompa_adi] Like '%" + textBox1.Text + "%'"; dataGridView1.DataSource = bs;
            }
    }}

    27 Mart 2015 Cuma 11:32
  • Videoyu seyret, 5 dk'dan az suruyor. Ayrica, bununla ilgili forumda defalarca ornekler verildi Onlara bak. 
    28 Mart 2015 Cumartesi 01:05