Tworzę formularz generyczny (C#), który może odbierać dowolne zapytanie Linq. W tej formie chcę móc dodawać filtry (klauzule WHERE). W przypadku operatorów takich jak "=", ">", "Lubię to" itp., Mogę robić rzeczy takie jak IQueryable.Where(someFieldname + "> @0", someCriteria)
. Ale kiedy chcę móc wykonać ekwiwalent T-sql "IN", jestem całkowicie zagubiony. Szukałem godzin, ale nie mogę znaleźć sposobu, aby to zrozumieć.Jak zrealizować ekwiwalent tsql "IN" przy użyciu dynamq Linq
Myślenie o tym w sposób, który powinien być możliwy, polega na umieszczeniu wartości w klauzuli IN w tablicy łańcuchowej lub na innej prostej liście łańcuchów. Następnie dołącz do tej listy za pomocą zapytania podstawowego. Ale jak mogę dołączyć do tych dwóch, gdy zapytanie bazowe może być dowolnym zapytaniem?
przykład: że moje żądania podstawowego jest czymś:
IQueryable<Object> q = from a in db.Adresses
select new { a.Street, a.HouseNr };
w postaci I chcą mieć możliwość filtrowania HouseNr następująco: gdzie HouseNr (w 1, 3, 5) Liczby (1, 3, 5) są dostępne w tablicy łańcuchów (lub dowolnej innej liście łańcuchów).
Jak mogę to osiągnąć, wiedząc, że podstawowym zapytaniem może być cokolwiek?
Nie sądzę, aby jedna osoba rozumiała Twoje pytanie. Możesz użyć Dynamic Linq do wygenerowania listy instrukcji 'OR', ale to nie jest * dokładnie * to samo, co klauzula' IN'. –