LINQ to SQL简单查询获取单个int值

时间:2011-07-21 21:13:41

标签: linq

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。

2 个答案:

答案 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);