我正在尝试使用 EF 通过 IN 子句查询数据库:
List<int> ids = new List<int> {1,2,3,4....20};
string sql = GetSql(ids);
//sql is "SELECT * FROM Student WHERE Id in (@p0, @p1, @p2 ... @p19)"
var res = db.Set<Student>().SqlQuery(sql, ids);
但是我得到以下异常:
不存在从对象类型 System.Collections.Generic.List`1[[System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] 到已知托管提供程序 native 的映射类型。
我正在处理这样的子句:
List<int> ids = new List<int> {1,2,3};
db.Set<Student>().Where(r => ids.Contains(r.ID));
更新:
你做如下(我没有自己测试,但它应该做你的工作)
public List<CustomObject> ExecuteCustomQuery(List<int> items)
{
var ids = string.Join(",", items.Select(i => i.ToString()).ToArray());
string query = "SELECT Column1, Column1 FROM TABLE1 where id in (" + ids + ")";
return dbContext.Database.SqlQuery<CustomObject>(query).ToList();
}
CustomObject有两个返回select语句列的属性。
告诉我你过得怎么样。
谢谢。