Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq中的连续(有条件)Where子句_Linq_Sharepoint - Fatal编程技术网

Linq中的连续(有条件)Where子句

Linq中的连续(有条件)Where子句,linq,sharepoint,Linq,Sharepoint,我正在尝试构造一个Linq语句,用于Sharepoint(2010)对象模型的客户端 这是一段有问题的代码: var result = news.Where(n => (bool)n["Online"] && ((DateTime)n["StartDate"] <= DateTime.Now && (DateTime)n["StopDate"] >= DateTime.Now)); if (currentUser.IsAgUser())

我正在尝试构造一个Linq语句,用于Sharepoint(2010)对象模型的客户端

这是一段有问题的代码:

var result = news.Where(n => (bool)n["Online"]
    && ((DateTime)n["StartDate"] <= DateTime.Now && (DateTime)n["StopDate"] >= DateTime.Now));

if (currentUser.IsAgUser())
    result = result.Where(n => (string)n["Role"] != "AG-ADMIN");

var filteredNews = sharepointContext.LoadQuery(result);

错误来自哪里?谢谢

SharePoint似乎不支持多个位置

便宜的解决方案:

var result = currentUser.IsAgUser() 
                 ? news.Where(n => (bool)n["Online"]
&& ((DateTime)n["StartDate"] <= DateTime.Now && (DateTime)n["StopDate"] >= DateTime.Now) && (string)n["Role"] != "AG-ADMIN")
                 : news.Where(n => (bool)n["Online"]
&& ((DateTime)n["StartDate"] <= DateTime.Now && (DateTime)n["StopDate"] >= DateTime.Now)); 

var filteredNews = sharepointContext.LoadQuery(result);
var result=currentUser.IsAgUser()
? 新闻。其中(n=>(bool)n[“在线”]
&&((DateTime)n[“StartDate”]=DateTime.Now)和&(string)n[“Role”!=“AG-ADMIN”)
:news.Where(n=>(bool)n[“在线”]
&&((DateTime)n[“StartDate”]=DateTime.Now));
var filteredNews=sharepointContext.LoadQuery(结果);

您可以操作表达式树,但这将是一个非常复杂的代码,查询并不复杂。我知道我有点晚了。我几乎有同样的问题。看起来SharePoint不支持将Linq表达式与AndAlso等组合。
var result = currentUser.IsAgUser() 
                 ? news.Where(n => (bool)n["Online"]
&& ((DateTime)n["StartDate"] <= DateTime.Now && (DateTime)n["StopDate"] >= DateTime.Now) && (string)n["Role"] != "AG-ADMIN")
                 : news.Where(n => (bool)n["Online"]
&& ((DateTime)n["StartDate"] <= DateTime.Now && (DateTime)n["StopDate"] >= DateTime.Now)); 

var filteredNews = sharepointContext.LoadQuery(result);