Windows Forms Project With Linq

cakir

New member
Katılım
7 May 2006
Mesajlar
10,807
Reaction score
0
Puanları
0

Evet Arkadaşlar Başlıktanda Anlaşılacağı Gibi Linq İle Windows Forms Uygulaması Yapıyoruz
Hiç Vakit Kaybetmeden Formumuzun Üzerine

1 Label = lblCategories,
1 ComboBox = cmbCategories,
1 DataGridView = dataGridView1 ...

Bırakıyoruz Ve Hiç Vakit Kaybetmeden Hemen Uygulamamıza Geçiyoruz Projemize Yeni Bir Klasör Ekliyoruz Ben Adını myClasses Olarak Değiştirdim
Ve İçerisine İlk Olarak Products.cs Class'ımızı Ekliyoruz Aşağıdaki Gibi Projemize Sağ Tıklayıp System.Data.Linq Reference'ını Eklemeyi Unutmuyoruz =)
Product.cs Class'ımız İle İşimiz Bitti ...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;



using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Data.Linq.SqlClient;
using System.Collections;


namespace CSharp_Linq_With_Windows_Forms.myClasses
{
[Table(Name="Products")]
public partial class Product
{
private int? _productID;
private string _productName;
private int? _supplierID;
private int? _categoryID;
private string _quantityPerUnit;
private decimal? _unitPrice;
private short? _unitsInStock;
private short? _unitsOnOrder;
private short? _reorderLevel;
private bool? _discontinued;
private string _picture;


[Column(Name="ProductID", IsPrimaryKey=true, IsDbGenerated=true)]
public int? ProductID
{ get { return _productID; } set { _productID = value; } }

[Column(Name="ProductName")]
public string ProductName
{ get { return _productName; } set { _productName = value; } }

[Column(Name = "SupplierID")]
public int? SupplierID
{ get { return _supplierID; } set { _supplierID = value; } }

[Column(Name = "CategoryID")]
public int? CategoryID
{ get { return _categoryID; } set { _categoryID = value; } }

[Column(Name = "QuantityPerUnit")]
public string QuantityPerUnit
{ get { return _quantityPerUnit; } set { _quantityPerUnit = value; } }

[Column(Name = "UnitPrice")]
public decimal? UnitPrice
{ get { return _unitPrice; } set { _unitPrice = value; } }

[Column(Name = "UnitsInStock")]
public short? UnitsInStock
{ get { return _unitsInStock; } set { _unitsInStock = value; } }

[Column(Name = "UnitsOnOrder")]
public short? UnitsOnOrder
{ get { return _unitsOnOrder; } set { _unitsOnOrder = value; } }

[Column(Name = "ReorderLevel")]
public short? ReorderLevel
{ get { return _reorderLevel; } set { _reorderLevel = value; } }

[Column(Name = "Discontinued")]
public bool? Discontinued
{ get { return _discontinued; } set { _discontinued = value; } }

[Column(Name = "Picture")]
public string Picture
{ get { return _picture; } set { _picture = value; } }


public Product
(
int ProductID,string ProductName,
int SupplierID,int CategoryID,
string QuantityPerUnit, decimal UnitPrice,
short UnitsInStock,short UnitsOnOrder,
short ReorderLevel,bool Discontinued, string Picture
)
{
this._productID = ProductID;
this._productName = ProductName;
this._supplierID = SupplierID;
this._categoryID = CategoryID;
this._quantityPerUnit = QuantityPerUnit;
this._unitPrice = UnitPrice;
this._unitsInStock = UnitsInStock;
this._unitsOnOrder = UnitsOnOrder;
this._reorderLevel = ReorderLevel;
this._discontinued = Discontinued;
this._picture = Picture;
}


public Product
(
string ProductName, int SupplierID,
int CategoryID, string QuantityPerUnit,
decimal UnitPrice, short UnitsInStock,
short UnitsOnOrder, short ReorderLevel,
bool Discontinued, string Picture
)
: this
(
0, ProductName, SupplierID, CategoryID, QuantityPerUnit, UnitPrice,
UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued, Picture
)
{ }


public Product()
:this(0,"",0,0,"",0,0,0,0,false,"")
{ }
}



// Yorum Satırı Olan Yerler Projeye Dahil Değildir :biggrin:
//public partial class Product
//{
// private static DataContext dc = new DataContext(Properties.Settings.Default.myNorth);


// public static IEnumerable Doldur_DataGridView()
//{
// Table<Product> myProduct = dc.GetTable<Product>();

// var query = myProduct.Where(p => SqlMethods.Like(p.ProductName, "A%")).Select(p => new { p.ProductName, p.UnitPrice, p.UnitsInStock });

// return query;
//}

// }
}





Hemen Arkasından Category myClasses Klasörü İçerisine Yeni Bir Class Daha Ekliyoruz Ve Adını Category.cs Olarak Değiştiriyoruz Ve Aşağıdaki Gibi Kodlarımızı Yazıyoruz




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;



using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;


namespace CSharp_Linq_With_Windows_Forms.myClasses
{
[Table(Name = "Categories")]
public partial class Category
{
private int? _categoryID;
private string _categoryName;
private string _description;
private byte[] _picture;


[Column(Name = "CategoryID", IsPrimaryKey = true, IsDbGenerated = true)]
public int? CategoryID
{ get { return this._categoryID; } set { this._categoryID = value; } }

[Column(Name = "CategoryName")]
public string CategoryName
{ get { return this._categoryName; } set { this._categoryName = value; } }

[Column(Name = "Description")]
public string Description
{ get { return this._description; } set { this._description = value; } }

[Column(Name = "Picture")]
public byte[] Picture
{ get { return this._picture; } set { this._picture = value; } }


public Category ( int CategoryID,string CategoryName,string Description,byte[] Picture )
{
this._categoryID = CategoryID;
this._categoryName = CategoryName;
this._description = Description;
this._picture = Picture;
}


public Category(string CategoryName, string Description, byte[] Picture)
:this(0,CategoryName,Description,Picture)
{ }

public Category()
:this(0,"","",null)
{ }
}




public partial class Category
{
private static DataContext dc = new DataContext(Properties.Settings.Default.myNorth);


public static void Doldur_ComboBox(ComboBox _Kombi)
{

Table<Category> myCategory = dc.GetTable<Category>();

_Kombi.DisplayMember = "CategoryName";
_Kombi.ValueMember = "CategoryID";
_Kombi.DataSource = myCategory.ToList();
}




public static IQueryable Get_Products_By_CategoryID(int CategoryID)
{
Table<Product> myProduct = dc.GetTable<Product>();


var query = myProduct.Where
(
p => p.CategoryID == CategoryID
).
Select
(
p => new
{
ProductID = p.ProductID,
ProductName = p.ProductName,
UnitPrice = p.UnitPrice,
UnitsInStock = p.UnitsInStock,
Picture = p.Picture
}
);


return query;
}
}
}




Artık İşimiz Bittiğine Göre form1' Load Olayına Ve cmbCategories_SelectedIndexChanged Olayına Gidip Son Kodlarımızı Yazalım Ve Projemizi Çalıştıralım
İstediğimiz Categoriye Ait Ürünlerimiz Karşımızda



private void Form1_Load(object sender, EventArgs e)
{
myClasses.Category.Doldur_ComboBox(cmbCategories);
}



private void cmbCategories_SelectedIndexChanged(object sender, EventArgs e)
{
int CategoryID = (int)cmbCategories.SelectedValue;

dataGridView1.DataSource = myClasses.Category.Get_Products_By_CategoryID(CategoryID);


}




f77f8389bdedc632e9b794a95a3a7bb0.jpg



8aae40e341b692f52518615a4e7777a9.jpg



Not : Öğrendiklerimize Bakacak Olursak Uzantısı örnek.dbml Olan Bir Özel Class Oluşturmak Yerine Kendi Özel Classlarımızı Manuel Oluşturduk
Product Ve Category Bu Classları [Table( Name="Product") ] Özellikleri Ekliyerek Linq'e Özel Kendi Table'larımızı Oluşturduk
Classlarımızdaki Metodları Static Olarak Oluşturduk Ki Nesnemizin Instance'sını Oluşturmadan Direkt Class Adı İle Çağırmak Adına

Bir Sonraki Projede Görüşmek Üzere Sağlıcakla =)
 
Geri
Üst