Jak używać "contains" lub "like" w dynamicznym zapytaniu linq?
Plik pomocy dołączony do dynamicznego Linq w CSharpSamples.zip Nie pokazuje żadnych przykładów użycia contains lub like.
Czy są jakieś proste obejścia? czyli gdzie (col jak @Col) nie działa.
3 answers
Oto odpowiedź! Dynamiczny Linq obsługuje . operator,
Według docs:
" pole instancji lub właściwość instancji dostęp. Dowolne publiczne pole lub własność / align = "left" / "
Dlatego możliwe jest użycie tej składni
.Where("MyColumn.Contains(@0)", myArray)
Dzięki za wszystkie sugestie! I dzięki mi za znalezienie rozwiązania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-16 16:16:28
Dla mnie rozwiązaniem było outerIt .
class User { public string Name { get; set; } }
...
IQueryable<User> query = db.Users;
...
query = query.Where("@0.Contains(outerIt.Name)", list);
Zauważ, że outerIt jest rodzajem słowa kluczowego wbudowanego w bibliotekę (nie musisz go modyfikować, ponieważ możesz go przeczytać w odpowiedzi tutaj). Za jej pośrednictwem można uzyskać dostęp do właściwości typu zapytania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-05 14:34:28
W Linq2Sql istnieje bezpośrednie wsparcie dla operatora like:
db.MyTable.Where(a => SqlMethods.Like(a.Name, "%"+searchTerm+"%"))
Zobacz tutaj:
Http://msdn.microsoft.com/en-us/library/system.data.linq.sqlclient.sqlmethods_members.aspx
... ale wolę używać startsWith, endsWith i contains dla większości zastosowań.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-16 15:34:34