我试图在数组中抓取一些ID,然后选择其中一些。我的表id字段的值为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; }
}
但是我得到了
&#34;其中一个主键值的类型与实体中定义的类型不匹配&#34;
和InnerException
&#34;参数类型&#39; Edm.String&#39;和&#39; Edm.Int32&#39;与此操作不兼容。在WHERE谓词附近,第1行,第66列。&#34;
但没有运气
谢谢