Линг в сущность конвертировать нулевой или пустой в Int - PullRequest
0 голосов
/ 06 октября 2011

Привет, у меня есть оператор Linq to Entity, который возвращает почтовый индекс.
и я храню этот почтовый индекс в моих строго типизированных списках
В моем списке Zipcode Тип данных int
когда мой оператор Liq возвращает Zipcode, появляются значения NULL и Empty
и я не могу преобразовать эти значения NULL и Empty в int
Как я могу справиться с этой ситуацией.
Я пробовал что-то вроде этого

ZipCode= Convert.ToInt32(p.ZipCode ?? "0")

любая помощь очень ценится.

спасибо

Ответы [ 3 ]

1 голос
/ 06 октября 2011

Если вы делаете это в памяти (после того, как результаты уже были извлечены из базы данных) и делаете это в одной строке, вы должны написать что-то вроде

int zip = Convert.ToInt32(!string.IsNullOrEmpty(p.ZipCode) ? p.ZipCode : "0");

Если вы пытаетесь преобразовать строку в целочисленный внутренний запрос в базе данных, вам может потребоваться определить пользовательскую функцию, которая преобразует преобразование в правильное приведение в базе данных. См. Этот связанный вопрос для возможной реализации .

Однако я бы рекомендовал вам , а не , чтобы преобразовать почтовый индекс в целое число. Почтовый индекс не числовое значение, несмотря на то, что он состоит из чисел (в некоторых частях света). Обращайтесь с ней как с правильной строкой, которая выглядит так, как будто вы уже делаете внутри p (и предположительно в базе данных). То же самое относится и к номерам телефонов, номерам SSN, номерам счетов и т. Д.

0 голосов
/ 06 октября 2011

Я бы начал с определения лямбда-функции, которая будет анализировать ваше целое число, например:

Func<string, int> parse = t =>
{
    int v;
    if (!int.TryParse(t, out v))
    {
        v = 0;
    }
    return v;
};

Тогда вам просто нужно сделать это:

var zipCodes =
    from e in db.Entity
    select parse(e.ZipCode);

Красиво и просто!

0 голосов
/ 06 октября 2011

Не видя вашего фактического запроса и предполагая, что p.ZipCode является строкой, вы можете сделать что-то подобное для преобразования в int

var query = from p in context.Entity
            let ZipCode = context.Entity.Take(1).Select(x => (p.ZipCode == null || p.ZipCode == "") ? "0" : p.ZipCode).Cast<int>().FirstOrDefault()
            select ZipCode;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...