Byte [] сравнение в Linq перечислимо - PullRequest
0 голосов
/ 25 января 2019

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

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

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

И использовал статическое расширение сравнения для сравнения байтов [] (источник: (* https://stackoverflow.com/a/42502969/3424480)

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);

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

...