1

データベースの Element と Entity に 2 つのテーブルがあり、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)'

これは、コードの 2 行目にあります。

編集:以下のコメントからモデルを追加しました。

実体モデル:

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 に答える