我有以下方法
public SomeObj LoadSomeData(int id)
{
using (var context = new DataContext())
{
var result =
context.Database.SqlQuery<SomeObj>
($"SELECT * FROM SOMEOBJECT WHERE id = {id}")
return result;
}
}
这工作正常,现在规范已经改变,我需要查找多个 ids
。我得到 id 作为 int 列表并返回一个列表。我阅读了一些有关 Sql Query 的内容,我可以使用 IN
并传递多个值。所以这是我的更改:
public List<SomeObj> LoadSomeData(List<int> listOfIds)
{
using (var context = new DataContext())
{
var result =
context.Database.SqlQuery<SomeObj>
($"SELECT * FROM SOMEOBJECT WHERE id IN ({id})") <-- I am not sure how to pass list in
return result;
}
}
第二种方法在我手动将值传递给查询(如 1、2、3 等)时有效,但我如何传递列表以进行查询?
最佳答案
这可以通过不同的方式实现。我建议一种方法是使用 Join
方法。
var ids = string.Join(",", listOfIds)
这会将 {1, 2, 3}
的列表返回到 1, 2, 3
的字符串
所以将它与您的 final方法放在一起看起来像这样:
public List<SomeObj> LoadSomeData(List<int> listOfIds)
{
var ids = string.Join(",", listOfIds)
using (var context = new KmdDataContext())
{
var result =
context.Database.SqlQuery<SomeObj>
($"SELECT * FROM SOMEOBJECT WHERE id IN ({Ids})")
return result;
}
}
关于c# - .NET 中具有多个 ID 的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49544795/