まず、この質問をするためにどの用語を使用すればよいかわからないため、自分自身を検索しても答えが見つからなかったのかもしれません。
そこで、Linq to SQL(C#、. Net 4)を使用しており、基準に一致するすべてのユーザーのリストを取得したいと考えています。その基本は次のようになります。
var users = DataContext.Users.Where(x => x.Criteria1 == "something");
しかし、この場合、一致させたいフィールドがいくつかあります。これらの特定のフィールドは一般的なチェックであり、ユーザークエリ内でこれをチェックするために使用できる専用関数を作成できるようにしたいと思います。マッチ。
もう少し良いことを説明するために、例を挙げましょう。ユーザーに5つのフラグがあり、それらのフラグのいずれかが設定されているかどうかを確認するための一般的なチェックが必要だとします。したがって、次のようにクエリを記述できます。
var users = DataContext.Users.Where(x => x.Flag1 || x.Flag2 || x.Flag3 || x.Flag4 || x.Flag5);
しかし、私がやりたいのは、その「5フラグチェック」を分離して、他のクエリでも使用できるようにすることです。最終的には、次のようなものを使用したいと思います。
var users = DataContext.Users.Where(x => x.Criteria1 == "something" && CheckForFlags(x));
私はこのような関数を持ってこれを試しました:
static bool CheckForFlags(User user)
{
return user.Flag1 || user.Flag2 || user.Flag3 || user.Flag4 || user.Flag5;
}
しかし、エラーが発生します:
「メソッド'BooleanCheckForFlags(User)'には、SQLへの変換がサポートされていません。」
...これは理にかなっていますが、この作業を希望どおりにするためにできることがありますか?または、Linq to SQLを使用していて、実際にはLinq to Objectsで機能するため、これは制限ですか?