C# Linq语句不考虑时间
我想从SharePoint中的列表中获取所有项目,但非常特定的情况除外。目前,我使用CAML查询获取所有内容,然后使用LINQ WHERE语句将它们从列表中删除。暂挂字段是从SharePoint中提取的日期,基本上是到期日期,而结束字段是一个简单的文本字段,用户可以向其中添加结束信息。如果暂挂日期/时间早于当前日期/时间,并且关闭字段没有inputnull,我希望将它们排除在查询之外 我无法使用纯CAML查询获得我想要的结果,所以我获取了所有内容,然后尝试使用LINQ after对其进行过滤。 CAML查询: LINQ我想在CAML查询中做什么: .Wherex=>!x、 悬念C# Linq语句不考虑时间,c#,linq,caml,C#,Linq,Caml,我想从SharePoint中的列表中获取所有项目,但非常特定的情况除外。目前,我使用CAML查询获取所有内容,然后使用LINQ WHERE语句将它们从列表中删除。暂挂字段是从SharePoint中提取的日期,基本上是到期日期,而结束字段是一个简单的文本字段,用户可以向其中添加结束信息。如果暂挂日期/时间早于当前日期/时间,并且关闭字段没有inputnull,我希望将它们排除在查询之外 我无法使用纯CAML查询获得我想要的结果,所以我获取了所有内容,然后尝试使用LINQ after对其进行过滤。
var query = new CamlQuery() { ViewXml = "<View><Query><OrderBy><FieldRef Name='Suspense' /></OrderBy></Query></View>" };
var actionItems = actionsList.GetItems(query);
context.Load(actionItems);
context.ExecuteQuery();
actions = actionItems.AsEnumerable()
.Select(x => new Models.Action()
{
Id = x.Id,
ItemNum = ListItemExt.GetInt32(x, "ID"),
WhoLead = ListItemExt.GetUser(x, "Who_x0020_L_x002d_Lead"),
WhoSupport = ListItemExt.GetUser(x, "Who_x0020_S_x002d_Spt"),
What = ListItemExt.GetString(x, "Title"),
Suspense = ListItemExt.GetDateTime(x, "Suspense"),
Closure = ListItemExt.GetString(x, "Closure")
}).Where(x => !(x.Suspense < DateTime.Now && x.Closure != null)).ToList();
lastModified = actionsList.LastItemModifiedDate;
}
return Json(new { Actions = actions, LastModified = lastModified}, JsonRequestBehavior.AllowGet);
编辑:我发现我的暂记日期来自UTC格式的Sharepoint,而我的c DateTime.Now是本地的。这是否会导致该问题?Sharepoint CSOM字段显示为UTC。我用的是DateTime。现在,切换到DateTime.UtcNow解决了我的问题。谢谢@HenkSharepoint CSOM字段以UTC的形式出现。我用的是DateTime。现在,切换到DateTime.UtcNow解决了我的问题。谢谢@Henk你确定悬念是一个完整的日期时间字段,而不仅仅是日期吗?返回的值是UTC时间还是本地时间?您可能需要更改悬念是日期和时间。它来自SharePoint,类似这样:Date041220190240,但我正在使用ListItemExt.GetDateTimex转换为DateTime,悬念如上。该函数将其转换为DateTime:将项[key]返回为DateTime?悬念的格式为UTC,因此我需要将其转换为local?或针对DateTime的comapre。UtcNowThank you@Henk,这解决了我的问题。特别是使用DateTime.UtcNow进行比较。乔纳森,谢谢。你确定悬念是一个完整的日期时间字段,而不仅仅是日期吗?返回的值是UTC时间还是本地时间?您可能需要更改悬念是日期和时间。它来自SharePoint,类似这样:Date041220190240,但我正在使用ListItemExt.GetDateTimex转换为DateTime,悬念如上。该函数将其转换为DateTime:将项[key]返回为DateTime?悬念的格式为UTC,因此我需要将其转换为local?或针对DateTime的comapre。UtcNowThank you@Henk,这解决了我的问题。特别是使用DateTime.UtcNow进行比较。乔纳森,也谢谢你。