Как преобразовать строку в лямбду в десятичную? - PullRequest
0 голосов
/ 13 августа 2011

У меня есть код

    myEntities db = new myEntities();
    var query = from s in db.mytable select s;
    if (!String.IsNullOrEmpty(str))
    {
      query = query.Where(p => p.total == str);
    }

Здесь типом «total» является строка, содержащая цифры и символы, например, "14x56xz". Я хочу получить числовую часть (например, 1456) из строки «total» и преобразовать ее в десятичное число, иногда с необходимостью превратить его в отрицательное число, чтобы код выглядел следующим образом:

    query = query.Where(10 <= p => p.total <= 1000);

Я написал класс для его обработки, но я не знаю, как вызвать этот метод обработки в Linq.

1 Ответ

1 голос
/ 13 августа 2011

Просто разбери его в лямбде. Например:

query = query.Where(10 <= p => decimal.Parse(p.total) <= 1000m);

Конечно, если есть способ улучшить модель данных, чтобы логически-числовые значения хранились в виде чисел, это было бы еще лучше ...

РЕДАКТИРОВАТЬ: Я думаю, вам будет трудно конвертировать "14x56xz" в 1456 в LINQ to Entities. Возможно, вы сможете что-то сделать на стороне базы данных, чтобы представить вычисляемый столбец, используя преобразования, регулярные выражения и т. Д., Но я не уверен, что вы сможете выразить это в LINQ таким образом, который будет преобразован надлежащим образом.

...