C# 查询0的DataGridview结果

C# 查询0的DataGridview结果,c#,mysql,datagridview,C#,Mysql,Datagridview,有人知道为什么我在datagridview中抛出零,而我的整个查询代码都是正确的。。下面是我的代码 boAPI4.Login login = new boAPI4.Login(); string cS = login.GetConnectionString(); DataAccess dA = new DataAccess(cS); int userID = dA.getLpeID(login.GetBoUserNr()); PRAESENZZEIT q = new PRAESENZZEIT()

有人知道为什么我在datagridview中抛出零,而我的整个查询代码都是正确的。。下面是我的代码

boAPI4.Login login = new boAPI4.Login();
string cS = login.GetConnectionString();
DataAccess dA = new DataAccess(cS);
int userID = dA.getLpeID(login.GetBoUserNr());
PRAESENZZEIT q = new PRAESENZZEIT();
q.ZPZ_LPE_ID = userID;
if (db.State == ConnectionState.Closed)
    db.Open();
string query = "SELECT per.LPE_Nr, zei.ZPZ_LPE_ID, zei.ZPZ_Datum, SUM (zei.ZPZ_Std100) AS Stunden" +
               " FROM DB.dbo.Z_PRAESENZZEIT zei INNER JOIN DB.dbo.A_PERSONAL per ON zei.ZPZ_LPE_ID = per.LPE_ID" +
                $" WHERE zei.ZPZ_Datum BETWEEN '{dtFromDate.Value}' AND '{dtToDate.Value}' AND zei.ZPZ_LPE_ID='{userID.ToString()}' GROUP BY per.LPE_Nr, zei.ZPZ_LPE_ID, zei.ZPZ_Datum ORDER BY zei.ZPZ_Datum, per.LPE_Nr;";
pRAESENZZEITBindingSource.DataSource = db.Query<PRAESENZZEIT>(query, commandType: CommandType.Text);

Praesenzeit类的定义

 public class PRAESENZZEIT
{
    public int LPE_Nr { get; set; }
    public DateTime ZPZ_Datum { get; set; }
    public double ZPZ_Std100 { get; set; }
    public int ZPZ_LPE_ID { get; set; }

    public DateTime ZPZ_Von { get; set; }
    public DateTime ZPZ_Bis { get; set; }
    public DateTime ZPZ_Std { get; set; }

    public int ZPZ_ID { get; set; }
    public int ZPZ_Jahr { get; set; }
    public int ZPZ_Monat { get; set; }
    public int ZPZ_Tag { get; set; }
    public DateTime ZPZ_ERFDAT { get; set; }
    public string ZPZ_ERFUSER { get; set; }
    public DateTime ZPZ_MUTDAT { get; set; }
    public string ZPZ_MUTUSER { get; set; }
}

在不了解您的系统的情况下,我只能做出有根据的猜测,但您可能希望更改您的查询:

SUM(zei.ZPZ_Std100)被击晕

为此:

SUM(zei.ZPZ_Std100)作为ZPZ_Std100

这是因为类
praesenzeit
有一个名为
ZPZ_Std100
的属性,但没有一个名为“Stunden”


我希望
db.Query
会进行反射,将结果集映射到属性名称,因此您需要列名来匹配属性名称。

如果您说您的代码是正确的,那么就无法解释这种行为,这与我们目前对物理定律的理解是一致的。我建议你出版。我会打电话给斯德哥尔摩,让他们冷静下来。可能
praesenzeit
没有一个名为“Stunden”的公共属性。我认为我的sql查询代码在测试中是正确的,只有输出代码显示为0。在执行查询之前转储查询。也许它们不一样。ToList()您的查询结果是tempo变量,并使用断点查看其中的内容。正常的调试工作。
 public class PRAESENZZEIT
{
    public int LPE_Nr { get; set; }
    public DateTime ZPZ_Datum { get; set; }
    public double ZPZ_Std100 { get; set; }
    public int ZPZ_LPE_ID { get; set; }

    public DateTime ZPZ_Von { get; set; }
    public DateTime ZPZ_Bis { get; set; }
    public DateTime ZPZ_Std { get; set; }

    public int ZPZ_ID { get; set; }
    public int ZPZ_Jahr { get; set; }
    public int ZPZ_Monat { get; set; }
    public int ZPZ_Tag { get; set; }
    public DateTime ZPZ_ERFDAT { get; set; }
    public string ZPZ_ERFUSER { get; set; }
    public DateTime ZPZ_MUTDAT { get; set; }
    public string ZPZ_MUTUSER { get; set; }
}