我的数据库元素和实体中有两个表,给定一个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; }
}
答案 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。