Mam te 4 pola wyboru, które stanowią ciąg zmiennych saljes, kopie, bajty, erbjudes. Gdy są sprawdzane, otrzymują wartość "on".Contains(), jak odwrócić za pomocą lambda
Z tego powodu stworzyłem zmienną łańcuchową (p), która zawiera wszystkie liczby, które chcę uwzględnić w instrukcji LINQ. Powiedzmy, że jeśli wszystkie pola wyboru są zaznaczone, otrzymam ciąg znaków "1234", a jeśli zaznaczone zostaną tylko pola wyboru 2 i 4, wynik będzie wynosił "24".
W mojej bazie danych mam pole o nazwie "Typ", które jest typu int. Chcę, aby baza danych zawierała wszystkie wiersze mające wartość "Typ", które można znaleźć w ciągu znaków p.
Coś takiego (oczywiście mój kod nie działa, więc muszę chłopaki):
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());
Co ja troche trzeba zrobić, to odwrócone Zawiera(), ale w jaki sposób?
Nie można użyć 'IEnumerable p'? Zawsze możesz "String.Join" go, jeśli potrzebujesz go w połączeniu, ale pozwoliłby ci większą kontrolę w odniesieniu do uzyskania indywidualnych wartości. Inną opcją jest użycie bitów: 'Int32 p;' i test '(p & 1)', '(p & 4)', itd. –
Więc jeśli twój ciąg to '" 234 "' wartość '24' należy znaleźć w bazie danych? –
Twoje pytanie jest dla mnie trochę niejasne - warto byłoby zobaczyć kilka przykładów tego, co chcesz osiągnąć dla różnych wartości "Typu". –