Конструктор, на который вы ссылаетесь (и сам класс Dispatch
), - это детали реализации Guava, и вы не должны его использовать. Скорее всего, вы хотите передать custom Executor
в AsyncEventBus
, он будет использоваться для отправки событий.
Пользовательские Dispatchers
не допускаются IMO, потому что трудно реализовать очереди надежным и потокобезопасным способом, и создатели библиотеки решили запретить такую возможность.
Похож на Linq к Объектам, не поддерживает, содержит:
http://msdn.microsoft.com/en-us/library/bb738638.aspx
Я прокрутил бы свой собственный запрос для этого. Ваша, вероятно, попытка хотеть полный контроль над текстовыми поисковыми запросами, если Вы узнаете эти типы поисков, становится проблемами производительности.
Едва ли LINQ имел отношение, но Вы могли рассмотреть использование Полнотекстового поиска SQL Server, в то время как СОДЕРЖИТ предикат, понимает булевы операторы — И, ИЛИ, И НЕТ.
Эта статья могла также быть полезной: Динамично Сочиняющие Предикаты Выражения
как насчет вместо:
IQueryable<SesameCharacters> filter = entities.SesameCharacters;
foreach (string keyword in k)
filter = ForceFilter(filter, keyword);
output = filter.ToList();
Сделайте:
return (from c in entities.SesameCharacters
where k.Contains(c..Description.ToLower())
select c
).ToList();
Я обнаружил, что это сработало для меня - это использование VB.Net с Entity Framework 4.0, но я уверен, что принцип работает.
Этот выполняет запрос в стиле «ИЛИ»:
Function Search(ByVal query As String) As IQueryable(Of Product)
Dim queryWords As String() = query.Split()
Dim entities As New Entities()
Return entities.Products.Where(Function(p) queryWords.Any(Function(w) p.Description.Contains(w)))
End Function
А этот выполняет запросы в стиле «И»:
Function Search(ByVal query As String) As IQueryable(Of product)
Dim queryWords As String() = query.Split()
Dim entities As New Entities()
Return entities.Products.Where(Function(p) queryWords.All(Function(w) p.Description.Contains(w)))
End Function