2015-12-09 4 views
0

Я все еще очень новичок в своих навыках linq. У меня есть запрос mysql, который возвращает 3 записи, каждая запись является int. Я хочу вставить эти ints в массив. Я думал, что смогу облегчить себе и сделать это с помощью команды linq, а не создавать читателя и перебирать результаты. Вот мой код:linq mysql query в int array

query = "SELECT cic.catid FROM cart_item ci LEFT JOIN cart_item_category cic USING (itemref) WHERE ci.pid = @pid"; 

try 
{ 
    item.catIDs = con.Query(query, new { pid = ImId}).ToArray(); 
} 
catch(MySqlException ex) 
{ 

} 

Я получаю сообщение об ошибке: Cannot implicitly convert type 'dynamic[]' to 'int[]'

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

+0

try 'new int [] {pid = ImId}'. Вы создаете динамический тип, когда выполняете 'new {pid = ImId}' или делаете 'item.catIDs'' динамическим [] ' – DGibbs

+0

или нет con.Query ? –

ответ

1

Вместо использования

con.Query(... 

попробовать с помощью

con.Query<int>(... 
0

Посмотрите, как catIds является массив целого, но вы пытаетесь присвоить анонимную коллекцию в целое, которое не является правильным.

Пожалуйста, попробуйте приведенный ниже код. Я думаю, что он должен работать

query = "SELECT cic.catid FROM cart_item ci LEFT JOIN cart_item_category cic USING (itemref) WHERE ci.pid = @pid"; 

try 
{ 
    item.catIDs = con.Query(query, Convert.ToInt32(ImId)).ToArray(); 
} 
catch(MySqlException ex) 
{ 

}