LINQ üzerine yazdığımız giriş yazısında belirttiğimiz gibi linq kullanarak, koleksiyonlar veya diziler üzerinde sql benzeri ifadelerle sorgular yazabilmekteyiz. Dizayn modülünü yazarken, “acaba javascript tarafında da linq kullanabilir miyiz?” sorusu aklımıza geldi. Yaptığımız ARGE çalışmaları sonunda, javascript için yazılan bir linq kütüphanesini kullanmaya karar verdik. Bu kütüphane yardımıyla ile C#’daki linq sözdizimine benzer sorgular yazarak, diziler ve bellekteki nesneler üzerinde rahatlıkla işlem yapabilmekteyiz.
Öncelikle basit bir örnek üzerinde kullanımını görelim: Range fonksiyonu verilen başlangıç ve bitiş indexleri arasında integer dizi oluşturur, bu diziden çift sayı olanları aşağıdaki gibi where koşulu ile seçebiliriz.
//E--> Linq.Enumerable'ın sembolüdür E.Range(0,10).Where("d=>d%2==0").Select("c=>c") |
Tablo1. Basit bir linq javascript kullanımı |
function DropZoneManager(designer) { DropZoneArray = new Array(); this.RemoveUserDefinedField = function() { //E--> Linq.Enumerable'ın sembolüdür. //From--> Verilen array'i veya nesne'ti Linq.Object'e dönüştürür. //Burada listbox'daki seçilmiş olan itemlar linq sorgusuyla alınır. //ToArray()-->Linq.Object’ten array’e dönüştürülür. var selectedItem = E.From(LstBoxUDF.options).Where("d=>d.selected").Select("c=>c").ToArray(); if (!selectedItem) return; //Seçilen sahanın unique field’si selectedValue sahasına alınır. var selectedValue = selectedItem[0].value; //DropZone array, başlık, detay ve sonuç bölümlerine bırakılmış sahaları her bir bölüm için DroppedObjects nesnesinde tutar. for (var j = 0; j < 3; j++) //Eğer silinmek istenen saha dizayna bırakılmış bir saha ise bu saha silinemez. Bu bilgi de seçilen değerin id'siyle DroppedObjects'in objInfo nesnesindeki fieldId il karşılaştırılarak bulunur. if (E.From(DropZoneArray[j].DroppedObjects).Count("i=>i.ObjInfo.FldID==" + selectedValue)) { FormDlgObj.showError(selectedItem[0].text+' sahası kullanıldığı için silinemez.'); return false; } FldsBar.RemoveItem(UserDefinedFldGroupID, selectedValue); } } |
Tablo2. Detaylı bir linq javascript kullanımı |
http://linqjs.codeplex.com/ adresinden daha ayrıntılı bilgi elde edilebilir ve linq.js kütüphanesi indirilebilir. http://neue.cc/reference.htm adresinden de kütüphanedeki fonksiyonlara ve örneklere ulaşılabilir.
Özlem KARAGEDİK
Yorumlar
Yorum Gönder