Sinan Arslan Yazılım Notları

Ado. Net Depo Otomasyon 2 bölüm

 Merhaba

 Ado.Net Otomasyon Senaryomuzun 2 bölümü 




using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;


namespace DepoStokJoin

{

    public partial class Form2 : Form

    {

        public Form2()

        {

            InitializeComponent();

        }


        private void Form2_Load(object sender, EventArgs e)

        {

            TedarikciGetir();

            KategoriGetir();

        }

        SqlConnection cnn = new SqlConnection("Data Source=DESKTOP-F7P5CJL\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");

public void TedarikciGetir()
        {
            SqlCommand cmd = new SqlCommand("Select * from Tedarikciler", cnn);
            cnn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                ComboMain cmb = new ComboMain();
                cmb.Text = rdr["SirketAdi"].ToString();
                cmb.Value = rdr["TedarikciID"];
                cmbTedarikci.Items.Add(cmb);
            }
            cnn.Close();


        }

        public void KategoriGetir()
        {
            SqlCommand cmd = new SqlCommand("Select * From Kategoriler", cnn);

           
            cnn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            if (rdr.HasRows)
            {
                while (rdr.Read())
                {
                    ComboMain cmb = new ComboMain();
                    cmb.Text = rdr["KategoriAdi"].ToString();
                    cmb.Value = rdr["KategoriID"];
                    cmbKategori.Items.Add(cmb);
                }
            }
            cnn.Close();
        }


        public void UrunDetayGetir(string ID)
        {
            pnlDuzenle.Visible = true;
            pnlIptal.Visible = false;

            
            SqlCommand cmd = new SqlCommand("Select u.UrunID,u.UrunAdi,t.SirketAdi,k.KategoriAdi," +
                "u.BirimdekiMiktar,u.BirimFiyati,u.Sonlandi from Urunler as u inner join Kategoriler as k" +
                " on u.KategoriID=k.KategoriID join Tedarikciler as t on u.TedarikciID=t.TedarikciID where u.UrunID=@UID",cnn);
            cmd.Parameters.AddWithValue("@UID", ID);
            cnn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            if (rdr.HasRows)
            {
                while (rdr.Read())
                {
                    //Panel 1 Doldurma
                    lblUrunID.Text= rdr["UrunID"].ToString();
                    lblUrunAdi.Text= rdr["UrunAdi"].ToString();
                    lblTedarikciAdi.Text= rdr["SirketAdi"].ToString();
                    lblKategoriAdi.Text= rdr["KategoriAdi"].ToString();
                    lblBirimMiktar.Text= rdr["BirimdekiMiktar"].ToString();
                    lblBirimFiyat.Text= rdr["BirimFiyati"].ToString();
                    lblSonlandi.Text= rdr["Sonlandi"].ToString();
                    //Panel2 doldurma Kısmı
                    lblUrunID2.Text = rdr["UrunID"].ToString();
                    txtUrunAdi.Text = rdr["UrunAdi"].ToString();
                    txtBirimFiyat.Text = rdr["BirimFiyati"].ToString();
                    txtBirimMiktar.Text = rdr["BirimdekiMiktar"].ToString();
                     chckSonlandi.Checked = Convert.ToBoolean(rdr["Sonlandi"].ToString());
                    cmbKategori.Text = rdr["KategoriAdi"].ToString();
                    cmbTedarikci.Text = rdr["SirketAdi"].ToString();

                }
            }
            else
            {
                MessageBox.Show("Data Okunamadı");
            }
            cnn.Close();

        }
   private void btnSil_Click(object sender, EventArgs e)
        {
           DialogResult sonuc= MessageBox.Show("Silmek İstediğinizden Emin misiniz?", "Onay", MessageBoxButtons.YesNo);
            if (sonuc==DialogResult.Yes)
            {
                SqlCommand cmd = new SqlCommand("Delete from Urunler where UrunID=@UID", cnn);
                cmd.Parameters.AddWithValue("@UID", lblUrunID.Text);

                cnn.Open();
                int etkilenensatirsayisi = cmd.ExecuteNonQuery();
                if (etkilenensatirsayisi > 0)
                {
                    MessageBox.Show("Veri Silindi");
                    Form1 frm = Application.OpenForms["Form1"] as Form1;
                    frm.UrunleriGetir();
                    
                }
                else
                {
                    MessageBox.Show("Veri Silinemedi");
                }

                cnn.Close();
            }
            else
            {
                this.Close();
            }
        }
 private void btnDuzenle_Click(object sender, EventArgs e)
        {
            pnlDuzenle.Visible = false;
            pnlIptal.Visible = true;
           
        }
  private void btnIptal_Click(object sender, EventArgs e)
        {
            pnlIptal.Visible = false;
            pnlDuzenle.Visible = true;
        }
 private void btnGuncelle_Click(object sender, EventArgs e)
        {
            SqlCommand cmd = new SqlCommand("Update Urunler set UrunAdi=@UrunAdi,TedarikciID=@TedID," +
                "KategoriID=@KatID,BirimdekiMiktar=@Miktar,BirimFiyati=@fiyat,Sonlandi=@Son where UrunID=@UID", cnn);
            cmd.Parameters.AddWithValue("UID", lblUrunID2.Text);
            cmd.Parameters.AddWithValue("@UrunAdi", txtUrunAdi.Text);

            ComboMain cmbted=   cmbTedarikci.SelectedItem as ComboMain;
            cmd.Parameters.AddWithValue("@TedID", cmbted.Value);

            ComboMain cmbkat = cmbKategori.SelectedItem as ComboMain;
            cmd.Parameters.AddWithValue("@KatID", cmbkat.Value);

            cmd.Parameters.AddWithValue("@Miktar", txtBirimMiktar.Text);

            SqlParameter prm = new SqlParameter("@Fiyat", SqlDbType.Money);
            prm.Value = txtBirimFiyat.Text;

            cmd.Parameters.Add(prm);

            cmd.Parameters.AddWithValue("@Son",chckSonlandi.Checked);
            cnn.Open();
            int etkilelenensatirsayisi=cmd.ExecuteNonQuery();

            if (etkilelenensatirsayisi > 0)
            {
                MessageBox.Show("Güncelleme İşlemi Gerçekleşti");
                Form1 frm = Application.OpenForms["Form1"] as Form1;
                frm.UrunleriGetir();
            }
            else
            {
                MessageBox.Show("Veri güncellemnemedi");
            }
            cnn.Close();


        }
    }
}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace DepoStokJoin

{

    public class ComboMain

    {

        public string Text { get; set; }


        public object Value { get; set; }


        public override string ToString()

        {

            return Text;//Ekrana Comboboxdaki Şirket adi veya KategoriAdinı almak için yaptık

        }

    }

}


Erdem Yazılım Lisesi Öğrencileri için hazırlanmıştır 





Ado.Net Depo Otomasyon

 Merhaba Arkadaşlar ;


Bu bölümde bir senaryo ele alıp bu senaryoya göre Windows Application'ımız üzerinde ilerliyor olacağız.

Senaryo 

Senaryo ;

Öğrencilerimizden Selim ABC isimli yazılım firmasında işe başlamıştır. Selim'den istenen ülkeler arası taşımacılık yapan DEFG isimli firmanın deposuna gerekli yazılımı yapmasıdır.

Depo elamanı Mike 'ın depodaki ürünlerin listeni görebileceği bir ekran tasarlanması ve bu ekran üzerinde seçili ürüne tıklayıp detayını görmesi ,stok miktarı azalmış ise yada ürün isminde ,tedarikçisinde ,kategorisinde bir değişik olduğunda güncelleyebilmesi ve stoklarını takip edip gereken uyarıyı zamanından önce üst kademesine yada tedarikçi firmaya bildirebilmesidir.

Bu nedenle aşağıdaki formların tasarım ekranlarını yapmanız beklenmektedir. Daha sonra projemizin kod ekranlarını sınıf ortamında bir Database oluşturup yazıyor olacağız.


Ekran Tasarımlarımız 








form1 code behind 


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

namespace DepoStokJoin
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

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

        public void UrunleriGetir()
        {
            lsvListe.Items.Clear();
            SqlConnection cnn = new SqlConnection("Data Source=DESKTOP-F7P5CJL\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");

            SqlCommand cmd = new SqlCommand("Select u.UrunID,u.UrunAdi,k.KategoriAdi from Urunler as u join Kategoriler as k on u.KategoriID=k.KategoriID", cnn);

            cnn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            if (rdr.HasRows)
            {
                while (rdr.Read())
                {
                    ListViewItem satir = new ListViewItem();
                    satir.Text = rdr["UrunID"].ToString();
                    satir.SubItems.Add(rdr["UrunAdi"].ToString());
                    satir.SubItems.Add(rdr["KategoriAdi"].ToString());

                    lsvListe.Items.Add(satir);
                }
            }
            else
            {
                MessageBox.Show("Herhangi Bir Data Okunamadı");
            }


            cnn.Close();
        }

        private void lsvListe_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            Form2 frm = Application.OpenForms["Form2"] as Form2;
            if (frm == null)
            {
                frm = new Form2();
            }
            frm.UrunDetayGetir(lsvListe.SelectedItems[0].Text);
            frm.Show();
        }
    }
}

Erdem Yazılım Lisesi Öğrencileri İçin Hazırlanmıştır







 Merhaba Arkadaşlar ;


Bu bölümde Ultrasonik mesafe sensörü kullanıyor olacağız.


Devre şemamız 




Kodlamarımız


#define echoPin 6
#define trigPin 7
#define buzzerPin 8

int maximumRange=50;
int minimumRange= 0;
void setup() {
  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);
  pinMode(buzzerPin,OUTPUT);

}

void loop() {
 int olcumdeger=mesafe(maximumRange,minimumRange);
 ses(olcumdeger *10);
}

int mesafe(int maxrange,int minrange)
{
  
  long duration,distance;

  digitalWrite(trigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin,LOW);

  duration=pulseIn(echoPin,HIGH);
  distance=duration/58.2;

  delay(50);
  if(distance >= maxrange || distance<=minrange)
  return 0;
  return distance;
  }

  int ses(int ss)
  {
    tone(buzzerPin,440);
    delay(ss);
    noTone(buzzerPin);
    delay(ss);
   }




Ardiuno R3 Potansiyometre Kullanımı

 


Merhaba Arkadaşlar ;


Bu bölümde basit  manada potansiyometre kullanımına bakıyor olacağız.

Devre Şemamız 




Kodlarımız 

// C++ code
//
int pot=A0;
int deger;
void setup()
{
pinMode(pot,INPUT);
Serial.begin(9600); 
}

void loop()
{
  deger=analogRead(pot);
  Serial.println(deger);
 
  delay(2000);
}


Ardiuno R3 SG90 Motor Kullanımı

 

Merhaba Arkadaşlar;


Ardiuno ile sg90 motor kullanımına bakıyor olacağız .Devre şeması çizimimiz aşağıdaki gibidir.






Kodlamarımız 

// C++ code
//
#include<Servo.h> // gereken kütüphane
Servo sg90;
void setup()
{
  sg90.attach(9);
}

void loop()
{
 sg90.write(90);
  delay(2000);
  sg90.write(0);
  delay(2000);
  sg90.write(180);
  delay(2000);
}


Karanlıkta Lamba Yakımı Ardiuno

 

Merhaba arkadaşlar;


Bu bölümde ardiuno r3 ile karanlıkta çalışan lamba yapımını paylaşıyor olacağım.

Devre Tasarımı 






Kodlarımızı yazarak tinkercad platformunda yada ardiuno ide si içersinde test edebiliriz.


// C++ code
//
int ldr=A0;
int ldr_deger;
int led=7;

void setup()
{
  pinMode(led,OUTPUT);
pinMode(ldr,INPUT);
  Serial.begin(9600);
  
}

void loop()
{
  ldr_deger=analogRead(ldr);
  Serial.println(ldr_deger);
  if(ldr_deger>400){
  digitalWrite(led,HIGH);
  }
  else
  {digitalWrite(led,LOW);}
    delay(1000); // Delay a little bit to improve simulation performance
}








Kodlama Dersi

Alice 3 Oyun Tasarımı



Merhaba Arkadaşalar ,

Alice 3 ile basit ama etkileyici oyunlar yapabilirsiniz.Biz bu bölümde basit anlamda yüreme ve kamera açılarını ele alarak yazmış olduğum procedure ve propertyler üzerinden devam ediyor olacağım.

ilk etapta tasarımımızı yani kurgumuzu gerçekleştiriyoruz daha sonra seçili public olarak tüm karaktere etki etmesi adına biped procedure seçimi yaparak procedure müzü oluşturuyoruz.Yürümeye birden fazla karakter devam edeceği için procedure ve property kullanmak daha avantajlıdır.Bu sayede bir karakter haraket edebildiği gibi istenirse bir orduda hareket edebilir.

İlk Adım Procedure örneği aşağıda ki gibi olup bu sayede karakterin hangi ayağı ile başlayacağını tayin ediyoruz.


Adım iki procedure örneği aşağıdaki gibi olup yürüme işi kombine bir harekettir .Doğal olarak bir sonraki adımda hangi ayağımızı atacağımıza karar vermeliyiz.İnsanlar bunu düşünmeden mantıken yapabilirken iş pc lere gelince boolean bir değişken ile mutlaka alice 3 e procedure yazarken pc ye haber verilmelidir kodlar yardımıyla .


Yukarıda da değinildiği gibi hangi ayak atılmalı procedure müzün property sini tanımlayalım.Which_leg Property si aşağıdaki gibidir.


Sayfamızda MyFirstMethod kısmı görünümü ise aşağıdaki gibi olmalıdır.


Umarım faydalı olur,bir sonraki yazıda görüşmek üzere 



Tinkercad Circuits



Merhaba Arkadaşlar ,


Tinkercad Circuits ile ardiuno set'e sahip olmasak bile birçok devre tasarımı yaparak kullanabilmekteyiz.

Devre tasarımlarım ve kod bloklarımı ziyaret etmek için bu linkten ulaşabilirsiniz.

https://www.tinkercad.com/users/3zaTml9AYTW




int yesil=9,mav=10,kir=11;
void setup()
{
  pinMode(yesil,OUTPUT);
  pinMode(mav,OUTPUT);
  pinMode(kir,OUTPUT);
  //analogwrite(pin,deger):bu komut sayesinde
 
  /*
  bir motoru farklı hızlarda yada bir ledi farklı parlaklıklarda
  yakabiliriz
 
  analog çıkışlı pinler 3,536,9,10,11
 
  */

}

void loop()
{
  //Beyaz
 
  analogWrite(kir,255);//beyaz 255 renk
  analogWrite(yesil,255);//beyaz 255 renk
  analogWrite(mav, 255);//beyaz 255 renk
 
  delay(1000); // Wait for 1000 millisecond(s)
  //Sarı
  analogWrite(kir,255);//beyaz 255 renk
  analogWrite(yesil,255);//beyaz 255 renk
  analogWrite(mav,0);//sarı
  //Mor
  delay(1000); // Wait for 1000 millisecond(s)
 
  analogWrite(kir,255);//beyaz 255 renk
  analogWrite(yesil,0);//mor
  analogWrite(mav,255);//beyaz 255 renk
  delay(1000);
}

Tinkercad Tasarım



Merhaba Arkadaşlar

Tinkercad ile basit hızlı bir şekilde tasarımlar yapabilmekteyiz.Dosya uzantısı olarak .stl ile dışa aktar diyip cura gibi programlar sayesinde 3d yazıcıdan baskı olarak çıktı alabilmekteyiz.

Bazı basit örnek çalışmalar





ARTIRILMIŞ GERÇEKLİK MERGE CUBE



Merge Cube 

Merhaba arkadaşlar bu bölümde artırılmış gerçeklik uygulamalarından merge cube değinmek istiyorum.Merge Cube ile birçok uygulama yapılabilmektedir.Öncelikle gereken aşağıdaki resimdeki küpü oluşturmak.

Yukarda belirtilen küp tamamlandığında aşağıdaki gibi olacaktır.

Uygulamayı tamamlamak için playstore'den merge cube indirilip telefonunuza kurulabilir.daha sonrasında açılan ekran üzerinden phone mode seçilerek aşağıda bulunan küpü üzerine gelecek
şekilde ayarlanır.
Ekran çıktısını video formatın da yada video olarak öğrencilerinizle paylaşabilirsiniz .Örnek resimler aşağıdaki gibi olup gezegenlerin gerçek sesleri ve uyduları görüntüleri hakkında info kısmında açıklamaları bulunmaktadır.














Kolejler için Demo Proje Paylaşımı



Merhaba Değerli Arkadaşlar,


Kolejler için yazmış olduğum uygulamaların demo kısımlarını paylaşıyor olacağım.Etkileşimli uygulamalar noktasında kullanışlı basit örnek web site ve masa üstü uygulamaları olarak eğitim sektörü için ücret dahilinde eğitim yazılımları yapmaktayım.



Ekran Görüntüleri



Scratch Oyun Yapımı

Merhaba Arkadaşlar,



Bu bölümde basit ama eğlenceli bir oyun yapıyor olacağız.Scratch 2 içersinden Giga walking karakterini seçiyoruz.Bunun için yeni kukla seçimine basıyoruz ve karşımıza çıkan pencereden fantezi sekmesinden gigawalking karakterini seçiyoruz.







Daha sonra sahne için bluesky'ı seçiyoruz ve  engel olarak yeni kukla sekmesinden ağaç karakterini seçip kodlama işlemlerine geçebiliriz.







Giga Walking Karakteri Kodları





Gigawalking karakterine ait kodlar yan tarafta görülmektedir




Tree1 karakterine ait kodlar yan tarafta görülmektedir.














Oyunumuzun Son Hali





Arduino Değişken Tanımlama

Merhaba Arkadaşlar,

Arduino ile değişken tanımlama bölümüne değindiğim bu yazıda temel amaç uygulama üzerinden gidebilmektir.Bunun yanı sıra değişken tiplerinin değer aralıklarını paylaşmadım.Nedeni birden fazla dilde değişiklik gösteren değer aralıkları internet gibi bir ortamda bulunabilmektedir






//Değişken tanımlama

/*
Değişken temel anlamda program kullanılacak birimlerin

gecici alianz olarak isimlendirilmesine yarar

sayısal değişkenler ,karakter (char) , metinsel string, ve
durum belirten çeşitleri vardır(bool) gibi

değişkenler belirli değer aralıklarına sahiptir.

sunumda detaylı anlatacağım.Başlıca değişkenler

int,string,char, bool,float vs
değişken tanımlarken belirli kurallar vardır.değişkenler
sayı ile başlamaz arada boşluk bırakılarak tanımlanmaz
ve kodlama da standart sağlanması adına camelcase kullanılır

*/
/*bool durum1=true;bool durum2=false;*/
int sayi_1=99.9;//integer tipindeki değişkenler , den sonraki kısmı
//tutmaz
double sayi_2=99.6;
void setup()
{
 Serial.begin(9600);
 Serial.println(sayi_1);
  Serial.println(sayi_2);


}

void loop()
{
  /*if(durum1==0)
  {
  Serial.println(durum1);
    delay(5000);
  }
  else if(durum1==1)
  {
  Serial.println(durum2);
  delay(5000);
  }
  else{
  Serial.print("  DURUM BULUNAMADI");
  delay(5000);
  }*/
}

Arduino Random Sayı Üretmek

Merhaba Arkadaşlar ,

Arduino ile Random fonksiyonuna ait özelliklere değinmeye çalıştım.Umarım Faydalı olur








/*
Random(): Bu method ile belirli aralıklarda sayılar üretilip
değişkenlere aktarılabilir

Random(max):Bu method ile değişkenin en küçük değeri ile

maximum değeri arasında sayı üretmeye yarar

Random(min,max):Bu method ile belirlenen min değeri ile max
değeri arasında sayı üretilebilinir

Random(1,10);örneğin burda 1 ila 9 arasında sayı üretimi

gerçekleşir

*/

//global değişken

//byte degisken_sayi;
long degisken_sayi;

void setup()
{
  Serial.begin(9600);
   randomSeed(100);
  Serial.println(" Uretilen Rastgele Sayilar");
  Serial.print("=============================");
  Serial.println("  ");
}

void loop()
{
 // degisken_sayi=random();
 // degisken_sayi=random(100);
  /*random fonksiyonu ile üretilen sayılar hep aynı dizilimi
  takip eder
  Farklı dizin aralıklarında sayı üretmek için randomSeed();
  kullanılır
  */
 
  /*
  arduino unonun analoğ pinlerine herhangi bir pin bağlanmadığında
 
  0 ila  1023 arasında değerler okunur bunu da analogRead(A0)
  ve randomSeed();methodları kullanarak rastgele yapabiliriz
  arduino nun A0 dan A6 ya kadar 5 adet analog girişi mevcuttur
  */
 //degisken_sayi=random(1,100);
 degisken_sayi=analogRead(A0);
  Serial.println(degisken_sayi);
  delay(5000);
}

Arduino Random Led Yakımı Buton ile

Merhaba Arkadaşlar,


  Arduino Uno ile Tinkercad üzerinde hazırlamış olduğum devre ile butona basılınca rastgele yanan led uygulamasını sizlerle paylaşıyorum



Devre Çizimi




Kod Paylaşımı

int dugme=2;
int led_sari=3;
int led_yesil=4;
int led_kirmizi=5;
int led_mavi=6;
int numara=0;


void setup()
{
 Serial.begin(9600);
  
  pinMode(dugme, INPUT);//düğmeye basıldıkça yanması için INPUT
  
  pinMode(led_sari, OUTPUT);
  pinMode(led_yesil, OUTPUT);
  pinMode(led_kirmizi, OUTPUT);
  pinMode(led_mavi, OUTPUT);
  
  randomSeed(analogRead(A0));

}

void loop()
{
  
  if(digitalRead(dugme)== HIGH)
  {
  numara =random(3,7);//yanacak ledin numarasını 3 ila 7 arasında //rastgele belirledik
    
  Serial.print(numara);//SeriPort ekranında yanan ledi görmek amaçlı
  
    switch(numara){
      
      case 3 :
    Serial.println(" : Sari");
      
    digitalWrite(led_sari,HIGH);
    digitalWrite(led_yesil ,LOW);
    digitalWrite(led_kirmizi,LOW);
    digitalWrite(led_mavi,LOW);
    break;
      
        case 4:
    Serial.println(" : YESIL");
      
    digitalWrite(led_yesil,HIGH);
    digitalWrite(led_sari,LOW);
    digitalWrite(led_kirmizi,LOW);
    digitalWrite(led_mavi,LOW);
        break;
      
        case 5:
    Serial.println(" : KIRMIZI");
      
    digitalWrite(led_kirmizi,HIGH);
    digitalWrite(led_sari,LOW);
    digitalWrite(led_yesil,LOW);
    digitalWrite(led_mavi,LOW);
        break;
      
         case 6:
    Serial.println(" : Mavi");
      
    digitalWrite(led_mavi,HIGH);
    digitalWrite(led_kirmizi,LOW);
    digitalWrite(led_sari,LOW);
    digitalWrite(led_yesil,LOW);
      break;
      
    }

  }
 
  delay(250); }

LINQ Query Expressions

Merhaba Arakdaşlar,

Kuzey Rüzgari veri tabanı üzerinde daha önceden mssql alt sorgular kısmında paylaşmış olduğum t-sql sorgularının linq Expressions'ları ile uygulama geliştiriyor olacağız.








   Soru  1) Hangi kategoriden kaç birim Urun var

            var sorgu = from urun in db.Products
                        join kategori in db.Categories on urun.CategoryID equals kategori.CategoryID
                        group urun by kategori.CategoryName into grup
                        select new {
                              grup.Key,
                            UrunAdeti= grup.Sum(x=>x.ProductID)
                        };
            dgvSonuc.DataSource = sorgu.ToList();

    Soru  2) Musterilerin gerçekleştirdiği ilk siparis tarihi

            var sorgu = (from satis in db.Orders
                        join musteri in db.Customers on satis.CustomerID equals musteri.CustomerID
                        group satis by musteri.CompanyName into grup
                        select new
                        {
                            grup.Key,
                            SatisTarihi= grup.Min(x=>x.OrderDate),
                         }).OrderBy(x=>x.SatisTarihi);
            dgvSonuc.DataSource = sorgu.ToList();




 Soru 3)    03.03.1997 yılında yapılan Siparisler gelsin

            DateTime tarih=  Convert.ToDateTime(txtTarih.Text);

              var sorgu = from satis in db.Orders
                          where satis.OrderDate == tarih

                          select satis;

              dgvSonuc.DataSource = sorgu.ToList();
    Soru  4) siparişler Tablosunda  en küçük sipariş tarihi gelsin

            var sorgu = (from satis in db.Orders
                        group satis by satis into grup
                        select new {

                        EnkucukTarih= grup.Min(x=>x.OrderDate)
                        }).Take(1).ToList();

            dgvSonuc.DataSource = sorgu;

    Soru  5) Firmların yaptıkları ilk sipariş tarihleri gelsin

            var sorgu = (from satis in db.Orders
                        join musteri in db.Customers on satis.CustomerID equals musteri.CustomerID
                        group satis by satis.Customer.CompanyName into grup
                        select new
                        {
                           SiparisSahibi= grup.Key,
                          SiparisTarihi= grup.Min(x=>x.OrderDate)
                        }).OrderByDescending(x=>x.SiparisTarihi).ToList();

            dgvSonuc.DataSource = sorgu;

     Soru   6)  Siparis adeti 4 den buyuk sirketler gelsin


            var sorgu = (from satis in db.Orders
                         join musteri in db.Customers on satis.CustomerID equals musteri.CustomerID
                         where musteri.CustomerID==satis.CustomerID
                         group musteri by musteri into grup
                         select new
                         {
                             FirmaAdi = grup.Key.CompanyName,
                             MusteriAdi= grup.Key.CustomerID,
                             SatisAdeti = grup.Count(),


                         }).Where(x => x.SatisAdeti > 4).ToList();
            dgvSonuc.DataSource = sorgu;

            int sayi = sorgu.Count();

    Soru 7)  Ürünler tablosunda ne kadar ürün var

             var sorgu = (from urun in db.Products
                          select urun).Sum(x => x.UnitsInStock);
             //yada
            var sorgu2= db.Products.Sum(x => x.UnitsInStock);
             MessageBox.Show(sorgu2.ToString());

   Soru  8) Hangi üründen Kaç birim Stock var


            var sorgu = from urun in db.Products
                        group urun by urun into grup
                        select new {
                         UrunAdi= grup.Key.ProductName,
                        Adeti=grup.Sum(x=>x.UnitsInStock)
                        };
            dgvSonuc.DataSource = sorgu.ToList();

    Soru   9)  Hangi Kategoriden kaç birim urun var

            var sorgu = from kategori in db.Categories
                        join urun in db.Products on kategori.CategoryID equals urun.CategoryID

                        group urun by urun.Category.CategoryName into grup
                        select new
                        {
                          KategoriAdi= grup.Key,
                          Adet=grup.Sum(x=>x.UnitsInStock)

                        };

            dgvSonuc.DataSource = sorgu.ToList();

      Soru  10 ) Kac farklı ülkeye satış yapılmış

            var sorgu = (from satis in db.Orders
                         select new { satis.ShipCountry }).Distinct();
            dgvSonuc.DataSource = sorgu.ToList();

            yada

            var sorgu2 = from satis in db.Orders
                         group satis by satis.ShipCountry into grup
                         select new { UlkeAdi=grup.Key };

            dgvSonuc.DataSource = sorgu2.ToList();

    Soru  12) hangi Ulkeye Kaçtane Siparis yapıldı

            var sorgu = from satis in db.Orders
                        group satis by satis.ShipCountry into grup
                        select new {
                           UlkeAdi= grup.Key,
                            SiparisAdet= grup.Count()
                        };
            dgvSonuc.DataSource = sorgu.ToList();

     Soru   13 )1996 yılında hangi ülkeye kaçtane sipariş gitmiş


            var sorgu = from satis in db.Orders
                        where satis.OrderDate.Value.Year==1996
                        group satis by satis.ShipCountry into grup
                        select new {
                         UlkeAdi=grup.Key,
                         Adeti= grup.Count(),

                        };

            dgvSonuc.DataSource = sorgu.ToList();

     Soru    14) 1996 yılında hangi ülkeye kaçtane sipariş gitmiş ve siparis sayısı 15 den büyük olan kayıtlar gelsin

            var sorgu = (from satis in db.Orders
                        where satis.OrderDate.Value.Year == 1996
                        group satis by satis.ShipCountry into grup
                        select new
                        {
                            UlkeAdi = grup.Key,
                            Adeti = grup.Count(),


                        });
            dgvSonuc.DataSource = sorgu.ToList();     

         Soru   15 ) Ülkelere giden kargoların ülke bazında ortalama taşıma ücretini  çokdan aza sıralayınız

            var sorgu = (from satis in db.Orders
                        group satis by satis.ShipCountry into grup
                        select new
                        {
                            UlkeAdi=grup.Key,
                           TasimaUcreti= grup.Average(x=>x.Freight)
                        }).OrderByDescending(x=>x.TasimaUcreti);

            dgvSonuc.DataSource = sorgu.ToList();

     Soru    16 ) Çalışanların ünvanlarının sayısı

            var sorgu = (from calisan in db.Employees
                        group calisan by calisan.TitleOfCourtesy into grup
                        select new {
                        Unvan= grup.Key,
                        Adet=grup.Count()
                        }).OrderByDescending(x=>x.Adet);
            dgvSonuc.DataSource = sorgu.ToList();

     Soru 17)  En yüksek ortalama uçuş fiyatı hangi ülkeye gitmiştir

            var sorgu = (from satis in db.Orders
                        group satis by satis.ShipCountry into grup
                        select new {
                        Ulke= grup.Key,
                        OrtalamaUcusFiyat= grup.Average(x=>x.Freight)
                        }).OrderByDescending(x=>x.OrtalamaUcusFiyat).Take(1);

            dgvSonuc.DataSource = sorgu.ToList();

    Soru   18)  Şimdiye kadar satılan ürünlerden nekadar hasılat elde ettik

            var sorgu = from satisdetay in db.Order_Details
                        join urun in db.Products on satisdetay.ProductID equals urun.ProductID
                        group satisdetay by urun.ProductName into grup
                        select new
                        {
                            UrunAdi = grup.Key,
                            AraToplam = grup.Sum(x => (x.Quantity * x.UnitPrice) )
                        };
            dgvSonuc.DataSource = sorgu.ToList();


Şimdi İse Entity Framework'de Crud İşlemlerine(Düzenle Sil Ekle Listele) ve  Lazy Loading, Eager Loading 'e Bakalım  Proje İndir

Video Anlatım 





Uygulama 2 indir