Запрос PetaPoco для типа int [] не работает - PullRequest
1 голос
/ 17 июня 2020

Здравствуйте, я пытаюсь сделать выборку в Microsoft SQL Server Management studio, где в одном из моих столбцов есть массив целых чисел, который я хочу получить на основе другого значения столбца.

Я сделав такой запрос:

int[] appsId = db.Fetch<int[]>($"SELECT Apps FROM [dbo].[Group] WHERE Name = @0", user.Groups[0]).FirstOrDefault();

В таблице есть следующая (сокращенная) информация:

Name    Apps
123     [356, 1589]

Используя это, я получаю исключение: 'Входная строка была в неправильном формате '.

Любые идеи, спасибо!

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Вероятно, нужно распаковать этот массив в запросе:

SELECT Value 
FROM [dbo].[Group] 
CROSS APPLY 
( 
   SELECT CAST(VALUE AS INT) Value 
   FROM OPENJSON(APPS) 
) v
WHERE Name = @0
0 голосов
/ 19 июня 2020

Решение было следующим:

Entities.Database.Group dbScope = db.Fetch<Entities.Database.Group>($"SELECT * FROM [dbo].[Group] WHERE Name = @0", user.Groups[0]).FirstOrDefault();

Поскольку Group - это класс, определяющий объект, вы можете сопоставить нужное поле, в данном случае Apps.

Спасибо всем !

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