LINQ to Entities не распознает метод метода System.String ToString (), и этот метод нельзя преобразовать в выражение хранилища - PullRequest
0 голосов
/ 30 июня 2011

Я изо всех сил пытаюсь найти обходной путь для этой проблемы. LINQ to Entities не позволяет использовать метод ToString ()

Я пытаюсь использовать следующий запрос

return (from buy in context.ContractBuys
        where (buy.DealerNo.Value.ToString().StartsWith(dlrNo)) &&
        (buy.CreationDate >= createDateFrom) && (buy.CreationDate <= createDateTo)
        select buy).ToList();

dlrNo - тип строки. но buy.DealerNo это Nullable int в C #. Могу ли я использовать оператор Like?

Ответы [ 2 ]

0 голосов
/ 30 июня 2011

возможное решение:

var l = (from buy in context.ContractBuys
        where
        (buy.CreationDate >= createDateFrom) && (buy.CreationDate <= createDateTo)
        select buy).ToList();

return l.where(buy => buy.DealerNo.Value.ToString().StartsWith(dlrNo)).toList();
0 голосов
/ 30 июня 2011

Поскольку номер дилера, очевидно, состоит из нескольких частей (поскольку вы пытаетесь просто посмотреть, с чего начинается число), он, вероятно, должен быть строкой, а не целым числом, поскольку, в конце концов, это не совсем одно число (или, может быть, вы могли бы разделить его на отдельные столбцы). Однако, если все числа имеют одинаковую длину, вы можете выполнить целочисленное деление на некоторую степень десяти. Например, если все числа имеют длину семь цифр и вы хотите посмотреть на первые три, разделите их на 10000. dlrNo, вероятно, следует проанализировать как int перед запросом.

int dlrNoAsInt = int.Parse(dlrNo);
return (from buy in context.ContractBuys
       where (buy.DealerNo.Value / 10000 == dlrNoAsInt) && ...;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...