Selamlar ; 

Sharepoint içerisinde bir listeden herhangi bir kayıt almak istediğinizde genel itibariyle kullanılan 2 yontem var.

Bunlardan birincisi tüm listeyi alip daha sonra LINQ ya da çok önceleri DataTable classının Select() metodunu kullanarak bir

şekilde listelemek ya da CAML query'lerini kullanmak.2. yöntem legal olan kesinlikle ama zorlukları var.Bu zorluklardan biride

yazılacak olan query'inin CAML için complex bir yapı teşkil ediyor olması.XML based bir yapıya sahip (CRM de

fetch yapanlar bilirler benzer bir yapıda orda bulunmakta..)..

Bir arkadaşımız saolsun oturup bunun için free versiyonu bulunan bir tool hazırlamış kesinlike kullanmanızı öneririm.

http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252 linkinden hazırladığı user controle ve ilgili helper

classını nasıl kullandığını görebilirsiniz. İndirmek için http://www.u2u.net/res/Tools/CamlQueryBuilder.aspx adresini

kullanabilirsiniz (hem 2003 hemde 2007 versiyonları bulunmakta..)

Gelelim join meselesine , CAML altyapısı gereği join mekanizmasına izin vermiyor peki çözüm olarak ne yapabiliriz ?

Database'mi bağlanacağız direkt, hayır..zaten bağlansanızda elinize birşey geçmez doğru dürüst :))

Aslına bakarsanız öyle çok bir çözüm şansınız olmamakla birlikte bunun LINQ ile bir nebze de olsa aşıldığını söyleyebiliriz..

Nasıl mı, pek tabi join mekanizması ile.Örnek vermek gerekirse ; 

var Sonuc = from AA in TelListe

                             join BB in SipListe on AA equals BB.AltListe into SanalAd

                             select new { TelNo = Eleman.TelNo, Degerler = SanalAd };

 şeklinde bir query'i nasıl IEnumerable<T> için yapabiliyorsak pek tabi sharepoint üzerinden aldığımız verileri

joinlemek içinde kullanabiliriz(Verinin tutuluş biçimine dikkat).Dikkat edilecek husus veriyi alırken her halükarda

CAML query'sine where cümlesini vermeniz gerektiği , yoksa gereksiz verinin joinlenme cabası where uygulanması

ve hepsinden daha da önemlisi bunun client'a getirilmeye zorlanması mantıklı olmasa gerek :) Sonrası

LINQ'in yardımları..Umarım fikir vermiştir.

 

Sevgiler

E2