簡體   English   中英

獲取Linq查詢的字段值-SharePoint

[英]Get Field Value For Linq Query - SharePoint

我一直在嘗試限制日期范圍之間的結果。 我正在使用CSOM連接到SharePoint。 我認為SharePoint版本是SharePoint Online(我們正在使用Office 365)。

基本上,我想限制以下查詢返回的日期。 我想要Start_Date <= TodayEnd_Date> = Today 不僅如此,我還不太了解如何使用linq返回字段的值。

我添加了這個:

.Where(x => x.Id <= 50)

正常工作。 這很容易,因為我可以使用Intellisense來找到Id屬性,但是找不到如何提取我感興趣的字段,以及如何使用linq通過附加的Where限制我的結果。

現在,在嘗試按原樣運行代碼時出現以下錯誤:

The 'ToDateTime' member cannot be used in the expression.

相關代碼:

    private ListItemCollection GetSharePointList(string XML, string tableName, ClientContext context, byte limit = 50)
    {
        List testTable = context.Web.Lists.GetByTitle(tableName);

        CamlQuery camlQuery = new CamlQuery
        {
            ViewXml = XML //The Passed in XML is: "<view></view>"
        };

        ListItemCollection GetSharePointList = testTable.GetItems(camlQuery);
        DateTime today = DateTime.Today;

        context.Load(GetSharePointList,
        items => items.Take(limit).Include(
                 item => item.Id,
                 item => item["DayOfMonth"],
                 item => item["Start_Date"],
                 item => item["End_Date"],
                 item => item["Task_FrequencyID_x003a_Frequency"],
                 item => item["TaskID_x003a_TaskName"],
                 item => item["TaskID_x003a_TaskAlias"],
                 item => item["TaskID_x003a_TaskDueTime"],
                 item => item["Daily_Frequency_x003a_DayofWeek"],
                 item => item["Weekly_Frequency_x003a_Week"],
                 item => item["End_Date"],
                 item => item["Monthly_Frequency"])
                        .Where(x => x.Id <= 50)
                        .Where(y => Convert.ToDateTime(y.FieldValues["Start_Date"]) <= today));

        context.ExecuteQuery();
        return GetSharePointList;
    }

若要將結果限制在Start_Date <= Today和End_Date> = Today之間,您需要使用CAML查詢。 這就是它在SharePoint中的工作方式。

因此,您需要如下修改代碼:

List testTable = context.Web.Lists.GetByTitle(tableName);

var viewQuery = string.Format(@"<View>
    <Query>
      <Where>
        <And>        
         <Leq>
            <FieldRef Name='Start_Date' />
            <Value Type='DateTime'><Today /></Value>
         </Leq>
         <Geq>
            <FieldRef Name='End_Date' />
            <Value Type='DateTime'><Today /></Value>
         </Geq>
      </And>
     </Where>
    </Query>
</View>");

CamlQuery camlQuery = new CamlQuery
{
    ViewXml = viewQuery;
};

ListItemCollection GetSharePointList = testTable.GetItems(camlQuery);

context.Load(GetSharePointList,
    items => items.Include(
    item => item.Id,
    item => item["DayOfMonth"],
    item => item["Start_Date"],
    item => item["End_Date"],
    item => item["Task_FrequencyID_x003a_Frequency"],
    item => item["TaskID_x003a_TaskName"],
    item => item["TaskID_x003a_TaskAlias"],
    item => item["TaskID_x003a_TaskDueTime"],
    item => item["Daily_Frequency_x003a_DayofWeek"],
    item => item["Weekly_Frequency_x003a_Week"],
    item => item["End_Date"],
    item => item["Monthly_Frequency"]));
context.ExecuteQuery();

foreach(ListItem spListItem in GetSharePointList){
    //do something with the data
}

參考- 使用CSOM C#檢索列表項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM