繁体   English   中英

Select 只有几列从表到 map 与 Odata Select 查询 C# Web API

[英]Select only few columns from a table to map with Odata Select query on C# Web API

我们在数据库中有一个表,它有多个列。 我们只需要一个只返回请求列的查询。 这些请求的列将来自 Odata Select 使用 C# Web API 请求的查询。例如,我有一个员工表,其结构如下 SQL。

在此处输入图像描述

我正在调用下面的示例 API 以获取结果。 http://domain/controller/method?Select=EmployeeID,EmployeeName

这个查询应该只从数据库中获取超过 2 列; 在当前场景中-数据库返回 Web 中的所有列和 Odata 配置 API 在将响应返回给用户之前过滤掉响应 请帮助解决如何在数据库中实现这一点。

实体框架示例

从包含列“id”、“col1”、“col2”、“col3”的表中选择列“id”和“col3”。

class filtededMyTableRow
{
    public long Id { get; set; }
    public string col3 { get; set; }
}

// ControllerName/GetCols?colNames=Id&colNames=col3
public void GetCols(string[] colNames)
{
    using (DbEntities context = new DbEntities())
    {
        /*
        MyTable
        id  col1    col2    col3
        1   text1   text2   text3
        2   text1   text2   text3
        3   text1   text2   text3
        4   text1   text2   text3
        5   text1   text2   text3
        6   text1   text2   text3 
        */

        string selArg = string.Join(",", colNames);
        List<filtededMyTableRow> filtededMyTable = context.Database
            .SqlQuery<filtededMyTableRow>($"SELECT {selArg} FROM MyTable")
            .ToList();

        /*
        filtededMyTable
        Id  col3
        1   text3
        2   text3
        3   text3
        4   text3
        5   text3
        6   text3
        */
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM