其中一个主键值的类型与实体

时间:2018-05-07 10:58:18

标签: c# asp.net-mvc linq

我试图在数组中抓取一些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;

我见过这个The type of one of the primary key values did not match the type defined in the entity. See inner exception for details

但没有运气

谢谢

0 个答案:

没有答案