1

我的数据库 Element 和 Entity 中有两个表,给定一个 el_id(element id) 我想从 Element 表中提取 ent_id(entity id) 并从 Entity 表中提取 ent_type_id(Entity type),我有一个 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; } 
}
4

1 回答 1

0

在这篇文章中查看 Brian Cauthon 的回答。你应该能够做这样的事情:

//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);

无论出于何种原因,没有采用 int 的 SqlFunctions.StringConvert() 重载,因此您必须强制转换为 double。

于 2013-01-07T22:12:53.470 回答