Ho queste 4 caselle di controllo, che costituiscono le variabili stringa saljes, kopes, byte, erbjudes. Quando vengono controllati, ottengono il valore "on".Contains(), come invertire usando lambda
Da questo ho messo insieme una variabile stringa (p) che contiene tutti i numeri che voglio includere nell'istruzione LINQ. Diciamo che se tutte le checkbox sono spuntate, otterrei una stringa "1234", e se solo la checkbox 2 e 4 sono spuntate, risulterebbe in "24".
Nel mio database ho un campo chiamato "Tipo" che è di tipo int. Voglio dire al database di includere tutte le righe che hanno un valore di "Tipo" che può essere trovato nella stringa p.
Qualcosa di simile a questo (ovviamente il mio codice non funziona, quindi ho bisogno di voi ragazzi):
var searchResult = from s in db.Ads select s;
string p = "1";
if (saljes != "on")
p = p.Replace("1", "");
if (kopes == "on")
p += "2";
if (bytes == "on")
p += "3";
if (erbjudes == "on")
p += "4";
searchResult = searchResult.Where(s => p.Contains(s => s.Type.ToString());
Quello che ho un pò che dovete fare è di un'immagine capovolta Contiene(), ma come?
Non è possibile utilizzare 'IEnumerable p'? Puoi sempre 'String.Join' se ne hai bisogno combinato, ma ti permetterebbe un maggiore controllo per quanto riguarda l'ottenimento di valori individuali. L'altra opzione è usare bit: 'Int32 p;' e test '(p & 1)', '(p & 4)', ecc. –
Quindi se la tua stringa è '" 234 "' un valore di '24' dovrebbe essere trovato nel tuo db? –
La tua domanda mi è un po 'oscura: sarebbe utile vedere alcuni esempi di ciò che si desidera avere per i vari valori di "Tipo". –