Я пытаюсь получить некоторые идентификаторы в массиве, а затем выбрать некоторые из них. Мое поле идентификатора таблицы имеет значения 01, 02, 01-03-04, поэтому я подумал, сначала использовать регулярное выражение для удаления тире, а затем преобразовать его в int. Мое поле это navchar. Я не знаю, правильно ли это, но мне нужны значения, которые больше 01 и меньше 08.
Это то, что я сделал до сих пор
var tids = db.mytable.AsEnumerable()
.Select(p => Convert.ToInt32(Regex.Replace(p.myID, "[^0-9]+", string.Empty)))
.ToArray();
var query = (from e in tids
where e >= 1 && e <= 8
select new MyTableViewModel ()
{
ID = Convert.ToInt32(Regex.Replace(db.mytable.Find(e).myID, "[^0-9]+", string.Empty)),
Details= db.mytable.Find(e).myDetails
}).ToList();
и для передачи данных в список, чтобы создать выпадающее меню
SelectList list = new SelectList(query , "ID", "Details");
ViewBag.ddl = list;
My MyTableViewModel
public class MyTableViewModel
{
public int ID { get; set; }
public string Details { get; set; }
}
Но я получаю
«Тип одного из значений первичного ключа не соответствует типу, определенному в сущности»
и в InnerException
«Типы аргументов« Edm.String »и« Edm.Int32 »несовместимы для этой операции. Рядом с предикатом WHERE, строка 1, столбец 66».
Я видел это Тип одного из значений первичного ключа не соответствует типу, определенному в сущности. Подробнее см. Внутреннее исключение
но не повезло
спасибо