IsNumeri c в EF Core - PullRequest
       1

IsNumeri c в EF Core

0 голосов
/ 30 марта 2020

Есть ли эквивалент EISNUMERI c в EF Core или с использованием linq или Dynami c Sql или аналогичного?

Я пытаюсь получить только строки со значениями чисел c из столбца nvarchar.

1 Ответ

1 голос
/ 31 марта 2020

Вы можете использовать Raw SQL Запросы

Примечание по безопасности: Всегда использовать параметризацию для необработанных SQL запросов

Для данного набора данных / result:

dataset

Класс сущности для EF Core: Sandbox.cs

    public class Sandbox
    {
        public int SandboxId { get; set; }
        public string StringOrNumber { get; set; }
    }

Создайте DbSet в вашем контексте:

    public DbSet<Sandbox> Sandboxes { get; set; }

Пометить как ключ:

    modelBuilder.Entity<Sandbox>().HasNoKey();

Тест:

    public async Task<IList<Sandbox>> GetNumberList()
    {
        // 1 = number, 0 = string
        var isNumeric = new SqlParameter("isNumeric", 1);

        var listOfNumbers = await _context.Sandboxes
        .FromSqlRaw("SELECT SandboxId, StringOrNumber FROM dbo.Sandbox WHERE ISNUMERIC(StringOrNumber) = @isNumeric", isNumeric)
        .ToListAsync();

        return listOfNumbers;
    }

Альтернативой FromSqlRaw является FromSqlInterpolated .

    var listOfNumbers = await _context.Sandboxes
    .FromSqlInterpolated($"SELECT SandboxId, StringOrNumber FROM dbo.Sandbox WHERE ISNUMERIC(StringOrNumber) = {isNumeric}")
    .ToListAsync();

Test Result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...