29 lines
1.0 KiB
C#
29 lines
1.0 KiB
C#
using Ardalis.Specification;
|
||
using DD.Persistence.Database.EntityAbstractions;
|
||
|
||
namespace DD.Persistence.Database.Specifications.ValuesItem;
|
||
|
||
/// <summary>
|
||
/// Спецификация эквивалентности значений IValuesItem в соответствии с индексацией
|
||
/// </summary>
|
||
/// <typeparam name="TEntity"></typeparam>
|
||
public class ValueEqaulSpecification<TEntity> : Specification<TEntity>
|
||
where TEntity : IValuesItem
|
||
{
|
||
public ValueEqaulSpecification(int index, string? value)
|
||
{
|
||
Query.Where(e => Convert.ToString(e.Values[index]) == value);
|
||
}
|
||
|
||
public ValueEqaulSpecification(int index, double? value)
|
||
{
|
||
Query.Where(e => Convert.ToDouble(e.Values[index]) == value);
|
||
}
|
||
|
||
public ValueEqaulSpecification(int index, DateTimeOffset? value)
|
||
{
|
||
// ToDo: рассмотреть возможность более вменяемого парсинга для даты
|
||
Query.Where(e => DateTimeOffset.Parse(Convert.ToString(e.Values[index])!) == value);
|
||
}
|
||
}
|