2011-07-21 19 views
0
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)しか指定できません。どういう意味ですか?ありがとう..LINQ to SQL単一のint値を取得するための単純なクエリ

追加情報「SharePoint WebサービスでMax()が動作しない理由」

http://msdn.microsoft.com/en-us/library/dd673933.aspxに移動します。

LINQ構文で表現クエリのセットは、データサービスによって使用されているURIの構文をベースのRepresentational State Transfer(REST)で有効になってたものよりも広いです:ノートは以下が含まれていると言います。クエリをターゲットデータサービスのURIにマップできない場合、NotSupportedExceptionが発生します。

答えて

2

リスト内のすべての項目が

return (int)(ctx.MyList.Max(x => x.MyNums) ?? 0); 
+0

ありがとうございました。私はその方法に気付かなかったので今は恥ずかしいです。 – KyleM

4

代わりにMaxを試しましたか?

double max = ctx.MyList.Max(t => t.MyNums); 
return (int) max; 
+0

は、「暗黙的にdouble型に変換することはできません...倍増する?」..編集nullの場合はnull値をチェックすることを忘れないでください:追加ctx.MyListがトリックを行う前に明示的に(double)にキャストしました。ありがとう。 – KyleM