Épület húr programozottan, és foglalkozik a hátsó vagy elülső logikai operátorok

szavazat
1

Én a Lucene egy alkalmazásban. Mint ilyen van egy formája, amely lehetővé teszi a felhasználók, hogy egy lekérdezés kiválasztja, hogy mit akarnak keresésre dropdown. Miután a felhasználó elküld, építek a lekérdezést, és ez jön le, hogy valami ehhez hasonló:

var formedQuery= string.Empty;
foreach(var field in fields)
{
    if (field.name != 'condition so you never know which field from fields will be 1st')
        formedQuery +=  AND + field.name + : field.value;
}

Most a probléma ezzel az, hogy a nyilatkozat kezdődik „ÉS”

Most általában befejezni:

formedQuery = formedQuery.Substring(4) //Trim the first 4 characters

Tudni fickó programozók általában szívesebben:

var formedQuery= string.Empty;
var i = false;
foreach(var field in fields)
{
    if (false && 
        field.name != 'condition so you never know which field from fields will be 1st')
    {
        formedQuery +=  AND + field.name + : field.value;
        i = true;
    }
    else
        formedQuery +=   + field.name + : field.value;
}

Van egy másik módszer az emberek szeretnék használni ezt a fajta dolog, én nem gondolok? Inkább az előbbi.

A kérdést 30/07/2009 00:40
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
0

Mindig használjuk az előbbi. Leginkább azért, mert úgy néz ki, tisztább nekem.


Egy másik megközelítés:

query = first_field_name

for every other field besides first:
    query = " AND " + field_name
Válaszolt 30/07/2009 00:49
a forrás felhasználó

szavazat
1

Van még két másik megoldás használok, attól egy kicsit a nyelvet. Az első hasonló a másodikhoz, de csak megváltoztatja az „első mező” ellenőrzést.

var formedQuery = string.Empty;
var and = string.Empty;
foreach(var field in fields)
{
    if (field.name != 'condition so you never know which field from fields will be 1st')
    {
        formedQuery += and + field.name + ":" field.value;
        and = " AND";
    }
}

De a megoldás szoktam használni magában rendezett listát. Feltételezve, hogy tudom kiterjeszteni a példa kód olyan módon, amely úgy néz ki, értelmes:

var formedQuery = list.Empty;
foreach(var field in fields)
{
    if (field.name != 'condition so you never know which field from fields will be 1st')
    {
        formedQuery.push(field.name + ":" field.value);
    }
}
formedQuery = formedQuery.join(" AND ");

Ez is az előnye, hogy nem jön össze sok felesleges szöveg példányban, mint a összeszerelni a húr (néhány nyelven, ez drága).

Válaszolt 30/07/2009 00:51
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more