IQueryable<double?> query = (from t in ctx.MyList orderby t.MyNums select t.MyNums).Take(1);
IQueryable<double> q2 = query.Cast<double>();
IEnumerator<double> enumerator = q2.GetEnumerator();
while (enumerator.MoveNext())
{
double d = enumerator.Current;
return System.Convert.ToInt32(d);
}
上述代码的上下文是我试图从SharePoint列表列中获取最大的整数值。 SharePoint似乎将所有列表项值都视为“数字”,这就是我最初“双倍”的原因。而不是“int?”。我怎么能更好地写这个查询?此外,目前它根本不起作用..它说“只能在最后一次导航后指定查询选项(orderby,where,take,skip)。”那是什么意思?感谢..
附加信息,例如“为什么Max()在SharePoint Web Services中不起作用”
转到以下链接:http://msdn.microsoft.com/en-us/library/dd673933.aspx。其中的说明如下:
LINQ语法中可表达的查询集比数据服务使用的基于表示状态传输(REST)的URI语法中启用的查询集更广泛。当查询无法映射到目标数据服务中的URI时,将引发NotSupportedException。
答案 0 :(得分:4)
您是否尝试使用Max
?
double max = ctx.MyList.Max(t => t.MyNums);
return (int) max;
答案 1 :(得分:2)
如果列表中的所有项都为空,请不要忘记检查空值
return (int)(ctx.MyList.Max(x => x.MyNums) ?? 0);