计算SQL查询不返回预期值

时间:2015-08-11 20:25:14

标签: c# sql sqlite

我正在尝试让一个方法返回一个count语句。

    public int getSettingsCount(string UserId, string Setting)
    {
        int LastSetting;
        //var user = new SqlDataLayer();
        using (var db = new SQLite.SQLiteConnection(this.DBPath))
        {
            {
                List<int> _setting = db.Query<int>("SELECT COUNT(*) FROM QTabSettings WHERE UserId = 1058 AND Setting = 'ServerDropdown' GROUP BY UserId;");
                LastSetting = Convert.ToInt32(_setting.SingleOrDefault());
            }
            return LastSetting;
        }
    }

当我执行查询时,它返回正确的值(6)。但是我从上面的查询中得到了值(0)。

如何让方法将计数作为int返回?

2 个答案:

答案 0 :(得分:1)

您正在使用LIMIT 1但仍然使用List<int>这是奇怪且不必要的。此外,由于它是count(*),因此不需要LIMIT 1,因为结果将是标量数据。应该改为

int _setting = db.Query<int>("SELECT COUNT(*) FROM QTabSettings WHERE UserId = 1058 AND Setting = 'ServerDropdown';");
LastSetting = _setting;

答案 1 :(得分:0)

如果我理解你的问题,我认为这就是你想要的:

LastSetting = _setting.FirstOrDefault();

或:

LastSetting = _setting[0];