使用ExecuteSql从包含2列的表中检索列表

本文关键字:检索 列表 2列 ExecuteSql 包含 使用 | 更新日期: 2023-09-27 18:11:17

我试图从SQL命令检索列表。我正在做这个

当我用硬编码参数运行查询时,我得到了2列(B1BRNB, PREMIUM),但我无法使用下面的代码在c sharp中获得它们。我将感激任何帮助!

public class Premiums
{
    public int B1BRNB { get; set; }
    public double PREMIUM { get; set; }
    public List<string> GetPremiums(string policyId)
    {
        var policy = _quoteRepository.GetPolicy(policyId);
        string sql = "SELECT B1BRNB, SUM(SARPREM) AS PREMIUM " +
                     " FROM PMSPSA15BR JOIN (SELECT DISTINCT(B1J4TX),B1BRNB " +
                     " FROM ASB1CPPBR WHERE B1ASTX = '@PolicyId' AND B1ADNB = '@Module'  ) a " +
                     " ON (B1J4TX = SARUNIT) " +
                     " WHERE POLICY0NUM = '@PolicyId' AND MODULE = '@Module' "+
                     " GROUP BY B1BRNB " +
                     " ORDER BY B1BRNB";

        var match = _dataContext.ExecuteSql<Premiums>(
                    sql,
                    new DB2Parameter("@PolicyId", policy.Id),
                    new DB2Parameter("@Module", policy.Line.Module)).ToList();

        return match;
    }

使用ExecuteSql从包含2列的表中检索列表

在这里

"WHERE B1ASTX = '@PolicyId' AND B1ADNB = '@Module'  ) a"
. . . . . .  .
"WHERE POLICY0NUM = '@PolicyId' AND MODULE = '@Module' "

去掉单引号

"WHERE B1ASTX = @PolicyId AND B1ADNB = @Module  ) a"
. . .  . . . . 
"WHERE POLICY0NUM = @PolicyId AND MODULE = @Module " 

使用参数时,不要用引号将它们括起来,因为它们被视为字符串值