CASTLE+LINQ=F1
Setelah beberapa lama belum sempat mencoba fitur-fitur dari .NET 3.5 karena kesibukan yang ada , akhirnya ada waktu juga buat mencobanya. Castle yang aku pakai sehari-haripun masih Castle RC 2. Sekarang aku mulai mencoba semuanya. Castle RC 3 dan LINQ. Rupanya ada beberapa methode tambahan di ActiveRecordBase-nya Castle RC 3. Seperti SaveCopy dan SaveUpdateCopy yang di release sebelumnya belum ada. Ok deh berarti sudah sama dengan ISession-nya NHibernate.
Sekarang saatnya untuk mencicipi LINQ. Ak coba dengan sampel sederhana….
string[] str = new string[] { “hello semua”, “hello kamu”, “hello tika” };
var items = from s in str where s.Substring(s.Length – 1, 1) == “a” select s;
foreach (var itm in items)
{
MessageBox.Show(itm);
}
Hemmm…menarik. Melakukan query di Array (memori). Di project-project sebelumnya masalah query adalah masalah yang agak menganggu ketika mau mengimplementasikan ActiveRecord secara total di aplikasi kita. HQL (Hibernate Query Language) kadang tidak sesuai dengan keinginan kita, akhirnya kembali ke selera asal pake SQL (he..hee..).
Let’s go to solve my real problem….ak coba me-recoding organization structure yang akan ditampilkan di treeview. Sekarang lihat hasilnya…
public static void LoadData(System.Windows.Forms.TreeView tvw )
{
tvw.Nodes.Clear();
Organization[] org = Organization.FindAll();
Organization[] Org1 = org.Where(s => s.ID.Length == 2).ToArray<Organization>();
System.Windows.Forms.TreeNode node=new System.Windows.Forms.TreeNode();
foreach (Organization o in Org1)
{
//System.Windows.Forms.MessageBox.Show(o.Name);
System.Windows.Forms.TreeNode curNode = tvw.Nodes.Add(“1″, o.Name);
curNode.Tag = o;
curNode.EnsureVisible();
curNode.ExpandAll();
CreateNodes(curNode, org, o);
}
}
private static void CreateNodes(System.Windows.Forms.TreeNode nodeParent, Organization[] orgs, Organization orgObj)
{
Organization[] Org = orgs.Where(s => s.ID.StartsWith(orgObj.ID)).ToArray<Organization>();
System.Windows.Forms.TreeNode curNode=null ;
foreach (Organization o in Org)
{
if (o.ID != orgObj.ID)
{
curNode = nodeParent.Nodes.Add(o.Name);
curNode.Tag = o;
curNode.EnsureVisible();
CreateNodes(curNode, orgs, o);
}
}
}
Awal yang indah… tanpa harus melakukan query lagi ke database saya bisa mengolah data yang sudah diambil sebelumnya. Cukup mengambil object Organization yang sudah berupa Array kemudian diolah dengan LINQ. Jadi deh…..
Maret 5, 2009 at 1:46 am
busedd… tuing2.. bahasa apa tu?? kram otak