Я работаю над пользовательским фильтром с System.Linq.Dynamic
, все было хорошо, пока я не начал бой с BETWEEN
.
Я создал собственный класс с именем Filtro
, у него есть такие свойства.
public string PropertyName { get; set; }
public string Value1 { get; set; }
public string Value2 { get; set; }
Затем я в основном фильтрую объект IQueryable
с параметрами этого класса
Я пытаюсь это:
var query = db.Where("@0 > @1 AND @0 < @2", filtro.PropertyName, filtro.Value1, filtro.Value2);
Моя проблема заключается в том, что параметры неправильно генерируются в запросе.
Пример:
filtro.PropertyName = "example";
filtro.Value1 = "10";
filtro.Value2 = "20";
Когда я генерирую запрос без параметров
var query = db.Where("example>10 && example<20");
Он генерирует это:
SELECT
[Extent1].[randomField] AS [randomField],
[Extent1].[example] AS [example],
FROM [dbo].[Transformador] AS [Extent1]
WHERE ([Extent1].[example] > cast(10 as decimal(18))) AND ([Extent1].[example] < cast(20 as decimal(18)))
ORDER BY [Extent1].[randomField] ASC}
Но когда я использую параметры (как я показал ранее), я получаю это
SELECT
[Extent1].[randomField] AS [randomField],
[Extent1].[example] AS [example]
FROM [dbo].[Transformador] AS [Extent1]
WHERE (N'example' > N'10') AND (N'example' < N'20')
ORDER BY [Extent1].[randomField] ASC
Я полагаю, что я неправильно использую параметры Linq Dynamics, но я не нашел ничего похожего в интернете
Надеюсь, кто-то знает, в чем проблема, заранее спасибо!