将SQL查询转换为LINQ查询,但只选择要返回的特定值

时间:2014-11-05 16:44:00

标签: c# mysql sql-server linq

我自己有一个SQL查询

SELECT follow_up_date, MAX(last_contact_date) AS last_contact_date
FROM db_accounts_last_contacts p
GROUP BY p.account_id

我试过了

var queryTest = context.db_accounts_last_contacts.SqlQuery(@"SELECT follow_up_date, MAX(last_contact_date) AS last_contact_date
FROM db_accounts_last_contacts p
GROUP BY p.account_id");

但是我收到了这个错误。

The data reader is incompatible with the specified 'dbModel.db_accounts_last_contacts'. A member of the type, 'id', does not have a corresponding column in the data reader with the same name.

我不想提取所有信息,因为此表可能会在稍后更新,我只想提取这两列

1 个答案:

答案 0 :(得分:2)

我认为您正在尝试使用表本身访问数据库表。 你错过了" AS"在p变量之前。 请尝试以下方法:

    var queryTest = context.ExecuteSqlCommand(@"SELECT follow_up_date, MAX(last_contact_date) AS ast_contact_date
                                       FROM db_accounts_last_contacts AS p
                                       GROUP BY p.account_id, follow_up_date, ast_contact_date ");

让我知道它是怎么回事。

P.S。 我真的建议使用EntityFramework,因为它将你的观察点从一个SQL转换为一个C#pov。这通常更容易理解。