c# - .NET 中具有多个 ID 的 SQL 查询

标签 c# .net

我有以下方法

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/

相关文章:

c# - Unity Resolver 的这个 lambda 表达式是做什么的

c# - MVC 4 Simple Populate DropDown 从数据库模型

c# - 有没有办法将 pdb 文件与 ilmerge 合并?

c# - LinqToSQL 错误 : Operation is not valid due to the current state of the object

c# - .NET 4.0 System.Timers.Timer 似乎在一段时间后不执行经过的事件

javascript - 向 Jint 公开特定 namespace

c# - 如何将其转换为使用 Linq 到数据集?

c# - 长任务期间的进度条进度

c# - 在 C# 的继承链中创建调用静态方法类型的对象

c# - 如何将 .NET 库的源代码获取到 VS