Я задал вопрос на Use a NaturalSortComparer in a LINQ Where Clause, и теперь у меня более сложная версия.Dynamic LINQ Where Clause as string с использованием NaturalComparer
Этот запрос предполагается простой запрос, как ProductCode> «U5» и используя NaturalComparer в ИНЕКЕ:
var comparer = new NaturalComparer();
Table1.AsEnumerable().Where(t=>
comparer.Compare(t.ProductString, "U5") >= 0);
код ниже для простого известного примера, но на самом деле фильтр вложен и имеет комбинации операндов AND/OR и неизвестно до выполнения. Я хочу перейти в динамический запрос LINQ как строку: данные находятся на SQL Server db, используя LINQ to Entities.
Пример:
var queryString= "((ProductCode > 'U5' Or TagString LIKE '%k') and Date < Now)
Or (MessageString = 'text' And Date < yesterday) OR SomeOtherString = '100'
or PriorityString <= '100X' or SomeInt =15";
// Call the constructor with the specified query and the ObjectContext.
ObjectQuery<Product> productQuery =
new ObjectQuery<Product>(queryString, context);
Как бы обрабатывать строковые поля с помощью NaturalComparer, и любой другой тип поля должны быть обработаны в обычном режиме?
Для чего это стоит, я дал ответ на ваш прежний вопрос (после того, как был принят другой ответ), который на самом деле предлагает более обобщенное решение, которое вы ищете, не прибегая к Dynamic LINQ, или тянуть всю таблицу в EF для запроса: http://stackoverflow.com/a/25800360/956150 – jdmcnair