0

PreprocessQuery内でLINQがどのように機能するかについて混乱しています。カスタム検索画面のクエリが大きくなる問題のトラブルシューティングを行ってきました。クエリの残りの部分は、私が最終的に分離した1つの小さな部分を除いて、機能しているようです。

query = query.Where(i => i.IntValue == 100); 

データベースに明らかに一致する値がある場合でも、これは結果を返しません。

ただし、以下は機能します。

query = query.Where(i => i.StringValue == "value"); 

以前に問題が発生したことのある計算フィールドは含まれていません。私は何が欠けていますか?

4

2 に答える 2

0

LightSwitchフォーラムでの質問への回答で述べたように、私はこのタイプの比較をPreProcessQueryメソッドで常に使用しているため、次のシナリオがチェックされていれば、このエラーは発生しないはずです。

プロパティは次のとおりです。

  1. int型(byteshortlongstringなどではありません)

  2. null許容不可

フォーラムへの投稿で提案されなかったことが1つあります(実際、投稿を確認したところ、この構文実際に提案されましたが、2つあることに気付かない場合に備えて、他の人のためにここに残しておきます構文)、「代替構文」を試してみてください。

query = from q in query 
        where q.IntValue == 100
        select q;

構文に違いはありませんが、エラーが発生することもありません。

于 2012-10-05T01:08:27.813 に答える
0

この特定のケースでは、Lightswitchクエリデザイナを使用して作成されたクエリの残りがあったことがわかりました。両方のクエリは共存して相互に補完することができますが、(この場合のように)干渉する可能性もあります。デザイナーからクエリをクリアした後、私のコードベースのクエリはうまく機能しました。

将来の参考のために、デザイナのクエリから始めて切り替えることにした場合は、デザイナの内容をクリーンアップすることを忘れないでください。Lightswitchフォーラムの投稿で、Yannは、常にデフォルトでコードでクエリを作成していると述べています。これは、クエリの単純さ以外のものがある場合は、おそらくかなり良い考えです。

于 2012-10-10T21:54:10.510 に答える