質問

ないのですが見つのポインタは右方向にどんなものはどのように用いるべき研究が多くの時間googlingう紡績く丸いの言語設定を英語に、日本語のスタックオーバーフローがお手伝い致します。

問題は、私がデータをフィルターに何ができるかのみお電話で化合物とロジックツリーです。現在のシステムを実装し、フィルタリングシステム。例えば、作ったデータセットす。を追加したり、バンチのインタラクションによるすべての人が別=女性(年齢>23)年 < 30)、(Status=シングル).簡単に、繰り返し処理を実行しを通じて、各項目の追加が有効な項目コレクションがあらゆる状況ではtrueです。

問題は私の出会うはいかがですか取り扱っており、ユーザに構築できる複雑なクエリーに関わるとは?おうと思っていう木の各ノードを表す表現を評価し、その子どもがtrueまたはfalseです。単純な例のひとつがフィルターダ((男==男年齢==25)又は(男==女性の状況==シングル))IQ>120.申し訳が思いつかない、より良い例です。ではどのようにしているのを表すこのタイプのツリー表現、評価コレクション内のアイテムに対しこれらの設計です。何を参照するよう?地獄、ど気にはGoogle検索繋がる可能性があるほかのプレ方向になっていますか?!

おかげで誰でもできる提供します。

ここでは一例ですの化合物のクエリーをツリー形式用のデータセットの人

  • クエリを表示、すべての人が性別は男目は緑または性別では女性目はブルーまたはステータスシングルです。にParen(男==男性&&眼==グリーン)||(性別==女性&&(眼==ブルー||状態==シングル))

ではツリー形式でim考え方

o-Root Node
  - And - Sex = Male
     - And - Eyes = Blue
  - Or - Sex = Female
     - And Eyes = Blue
     - Or Status = Single

この溶液を代表する各ノードのようなデータ構造になっています

Node
{
   OpType - AND or OR
   ExpressionField - The field to evaluate
   ExpressionOp -   =, !=, >, >=, <, <=
   ExpressionValue - the value to compare the field's value against

   Function Evaluate() - returns a bool
}

っていることはもちろん、指定されたノード評価の子供あれば、ノード、その場合にtrueを返します表現に結果がtrueにすべて、お子様とご評価をtrue又は児童の評価をtrue、recurseます。

うらゆるニーズに対応した概念条件かスローされる可能性がありますので、今まで私が実行いたします。今後の実コードは最後に、写真を記述してこの問題によります。

役に立ちましたか?

解決

ご解析の表現(別==男年齢==25)又は(男==女性の状況==シングル))IQ>120見と覗けます。い構文解析す:

* And
    * Or
        * And
            * ==
                * Sex
                * Male
            * ==
                * Eyes
                * Blue
        * And
            * ==
                * Sex
                * Female
            * ==
                * Status
                * Single
    * >
        * IQ
        * 120

ツリータイプすることはできない。

Node
{
    bool evaluate ()
}

AndNode : Node
{
    Node left
    Node right

    bool evaluate ()
    {
        return left.evaluate () && right.evaluate ()
    }
}

// OrNode is similar

EqualsNode : Node
{
    Field field
    Value value

    bool evaluate ()
    {
        return field.value () == value
    }
}

// Likewise for <, >, etc

他のヒント

これらの種類のクエリが表示しています。 ORedの配列 ANDed条項.それは、表形式で読む複数の条件 AND編集し、その読みを OR します。つながるもの繰り返し条件は内容を利用者に分かりやすい形で読み書き、理解するさらにサンプル ((Sex == Male AND Age == 25) OR (Sex == Female AND Status == Single)) AND IQ > 120 ようにな

Sex == Male   & Age == 25        & IQ > 120 
Sex == Female & Status == Single & IQ > 120 

するためにGoogleのために当サイトではお客様の述語微分積分学"と"and常'.

と言うのもあるのでしょうけどこれはなぜデータベースエンジンと連携して実行されます。きをすることができることだと思いますがセットの論理と合でも、結果的にお、論文は標準の問題を解決するデータベースとSQL.で説明する必要がありますのでlinqのためのコード溶液とする。

音などを作成する必要がありますユーザーインターフェースでの簡単な構文解析す。時のプレス行きを歩くツリーを作成しLINQ表現のツリーからユーザインタフェース構造です。実行にLINQクエリーおよびその処理の結果として必要です。これもひとえにお読みにLINQ表現。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top