[C#.NET][Sharepoint 2010] LINQ 與 Sharepoint 2010

[C#.NET][Sharepoint 2010] LINQ 與 Sharepoint 2010

這是一項新功能,Microsoft.SharePoint.Linq命名空間路徑為

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI

2010-5-18 下午 10-20-11

 

以往我們在讀取清單時有幾種做法

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

2010-5-18 下午 11-20-56

以上範例只能在3.5執行??

2010-5-19 上午 12-27-35



接下來將介紹如何使用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

2010-5-19 上午 12-11-42

Step2.將剛產生出的類別加入專案中,並加入Microsoft.SharePoint.Linq參考及匯入命名空間,就可以把紅色波浪狀處理掉。

2010-5-19 上午 01-15-13

 

好酷的東西,把整個網站的架構都處理好了耶。

 

Step3.加入以下程式碼

2010-5-19 上午 01-18-35

執行結果

2010-5-19 上午 01-19-05

PS.測半天都沒有半法在Winform專案用這招,一直給我出現下面的錯誤訊息,也不知道怎麼解。

晚了,我該睡了

 

範例下載

LINQtoMOSS.zip

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo