C# 计数SQL查询未返回预期值
我试图让一个方法返回count语句C# 计数SQL查询未返回预期值,c#,sql,sqlite,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)) { {
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;
}
}
public int getSettingsCount(字符串用户ID,字符串设置)
{
最后设置;
//var user=new SqlDataLayer();
使用(var db=new SQLite.SQLiteConnection(this.DBPath))
{
{
列表_setting=db.Query(“从QTabSettings中选择COUNT(*),其中UserId=1058,setting='ServerDropdown'按UserId分组;”;
LastSetting=Convert.ToInt32(_setting.SingleOrDefault());
}
返回最新设置;
}
}
当我执行查询时,它返回正确的值(6)。但是,我从上面的查询中得到了值(0)
如何获得将计数返回为int的方法?如果我正确理解您的问题,我认为这就是您想要的:
LastSetting = _setting.FirstOrDefault();
或:
您正在使用
LIMIT 1
,但仍在使用List
,这很奇怪,也没有必要。另外,由于它是count(*)
,因此不需要LIMIT 1
,因为结果将是标量数据。应该改成
int _setting = db.Query<int>("SELECT COUNT(*) FROM QTabSettings WHERE UserId = 1058 AND Setting = 'ServerDropdown';");
LastSetting = _setting;
int设置=db.Query(“从qtrasettings中选择COUNT(*),其中UserId=1058,set='ServerDropdown';”;
LastSetting=\u设置;
这将返回1,因为列表中只有一个值。我需要访问该实际值。我不确定为什么要使用列表,但请尝试执行LastSetting=\u setting.FirstOrDefault();因为如果我不这样做,就会出现一个编译错误,说明无法将int隐式转换为列表。\u setting.count()
将返回列表的count属性,而不是DB count值。是吗?@Rahul是的,这是正确的-我误解了这个问题。你希望限制1
能实现什么?很好,我删除了它。你为什么按时间戳排序
?此查询仍将返回一行。代码似乎是正确的,但我会尝试更改列表中的列表
,并在所有地方进行适当的更改。只是想尝试一个疯狂的想法。加上在他的查询中,groupby
也是不必要的,因为我们过滤一个唯一的用户。
int _setting = db.Query<int>("SELECT COUNT(*) FROM QTabSettings WHERE UserId = 1058 AND Setting = 'ServerDropdown';");
LastSetting = _setting;