类型转换错误:System.Linq.IQueryable(string)'到System.Linq.ParallelQuery(int)'

时间:2013-01-07 20:33:05

标签: asp.net-mvc linq-to-sql

我的数据库元素和实体中有两个表,给定一个el_id(元素id)我想从Element表中提取ent_id(实体id),从Entity表中提取ent_type_id(实体类型),我有一个ent_id两个表中共有的列,但它在Element表中是int,在Entity表中是String,下面是代码,帮我解决它。

  var ent_ids = _context.Elements.Where(e => el_ids.Contains(e.el_id)).Select(el => el.ent_id);
  var ent_type_ids = _context.Entities.Where(e => ent_ids.Contains(e.ent_id)).Select(el => el.ent_type_id);

错误:

Instance argument: cannot convert from 'System.Linq.IQueryable(string)' to 'System.Linq.ParallelQuery(int)'

这是代码的第二行。

编辑:从下面的评论中添加模型。

实体型号:

public partial class Entity 
{ 
    public int ent_id { get; set; } 
    public Nullable<int> document_id { get; set; } 
} 

元素模型:

public partial class Element 
{ 
    public int el_id { get; set; } 
    public string ent_id { get; set; } 
}

1 个答案:

答案 0 :(得分:0)

Check out Brian Cauthon answer on this post。你应该可以这样做:

//according to the models you posted...

//this is a collection of strings right?
var ent_ids = _context.Elements.Where(e => el_ids.Contains(e.el_id)).Select(el => el.ent_id);

//e.ent_id should be an int right?.
var ent_type_ids = _context.Entities.Where(e => ent_ids.Contains(SqlFunctions.StringConvert((double)e.ent_id))).Select(el => el.ent_type_id);

无论出于何种原因,SqlFunctions.StringConvert()都没有超载,因此需要转换为double。