[C#.NET][Sharepoint 2010] LINQ 與 Sharepoint 2010
這是一項新功能,Microsoft.SharePoint.Linq命名空間路徑為
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI
以往我們在讀取清單時有幾種做法
1.SPList 用 for each
2.SPList 用 SPQuery
3.SPList 用 DataTable
4.Web Service
以下有幾個簡單的範例
SPSite site = null;
SPWeb web = null;
private void button1_Click(object sender, EventArgs e)
{
string btn = ((Button)(sender)).Text;
site = new SPSite("http://127.0.0.1");
//
Stopwatch sw = new Stopwatch();
sw.Reset();
sw.Start();
//
web = site.OpenWeb();
SPList list = web.Lists["Districts"];
switch (btn)
{
case "foreach":
foreach (SPListItem item in list.Items)
{
listBox1.Items.Add(item["City"] + "\t" + item["District"]);
}
break;
case "CAML":
SPQuery query = new SPQuery();
query.Query = "<Query><OrderBy><FieldRef Name='City' /></OrderBy></Query>";
foreach (SPListItem item in list.GetItems(query))
{
listBox1.Items.Add(item["City"] + "\t" + item["District"]);
}
break;
case "DataTable":
query = new SPQuery();
query.Query = "<Query><OrderBy><FieldRef Name='City' /></OrderBy></Query>";
SPListItemCollection items = list.GetItems(query);
DataTable dt = items.GetDataTable();
foreach (DataRow row in dt.Rows)
{
listBox1.Items.Add(row["City"] + "\t" + row["District"]);
}
break;
}
sw.Stop();
long tk = sw.ElapsedTicks;
listBox1.Items.Add(btn + " 方法共花費" + tk.ToString() + " tk");
site.Dispose();
web.Dispose();
}
Note.開發 Sharepoint 2010 時Solution Platforms 要記得選Any CPU
以上範例只能在3.5執行??
接下來將介紹如何使用LINQ to Sharepoint
1.建立類別文件
開啟命令提示字元
進入 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN 資料夾
執行
C# SPMetal.exe /web:http://127.0.0.1 /code:EntiyClass.cs /language:csharp
VB SPMetal.exe /web:http://127.0.0.1 /code:EntiyClass.vb /language:VB
Step2.將剛產生出的類別加入專案中,並加入Microsoft.SharePoint.Linq參考及匯入命名空間,就可以把紅色波浪狀處理掉。
好酷的東西,把整個網站的架構都處理好了耶。
Step3.加入以下程式碼
執行結果
PS.測半天都沒有半法在Winform專案用這招,一直給我出現下面的錯誤訊息,也不知道怎麼解。
晚了,我該睡了
範例下載
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET