Byte[] сравнение в Linq перечислимо

Я пытаюсь получить записи SQL, где версия строки больше определенного значения. В SQL это тривиально (WHERE RowVersion > x), но не в динамических запросах Linq.

В моей модели EF я применил аннотацию Timestamp к соответствующему столбцу.

[Timestamp]
public byte[] RowVersion { get; set; }

И использовал статическое расширение сравнения для сравнения байтов [] (источник: ( /questions/40682785/kak-sravnit-dva-bajtovyih-massiva-s-bolshim-ili-menshim-chem-znachenie-operatora-v-c-ili-linq/40682798#40682798)

static class MiscExtension
{
    public static int Compare(this byte[] b1, byte[] b2)
    {
        if (b1 == null && b2 == null)
            return 0;
        else if (b1 == null)
            return -1;
        else if (b2 == null)
            return 1;
        return ((IStructuralComparable)b1).CompareTo(b2, Comparer<byte>.Default);
    }
}

Я попробовал приведенное ниже выражение Dynamic Linq безуспешно (maxRV - это байтовый байтовый порядок байтов []).

.Where("RowVersion.Compare(@0) > 0", maxRV);

Это выдает "Не существует подходящего агрегатного метода" Сравнить "существует", что, после некоторого исследования, я считаю, что это потому, что "Сравнить" не является допустимым перечислимым методом. Любые указатели на то, где я мог ошибиться / альтернативные подходы приветствуются.

0 ответов

Другие вопросы по тегам