如何从下面的查询中获取并循环这些值?查询返回计数。
var quantities = db.Database.SqlQuery<List<string>>
(@"SELECT Quantity
FROM Runlist WHERE(UserId = @userid)
GROUP BY Quantity", new SqlParameter("@userid", user.Id)).ToList();
foreach (var qty in quantities)
{
}
这是查询的结果。
Quantity
---------
1250
1750
2500
5000
5250
6250
11500
12250
12500
15500
17000
164250
发布于 2019-09-17 14:27:31
将查询替换为如下所示,以获取数量计数
List<string> quantities = new List<string>();
quantities = db.Database.SqlQuery<List<string>>
(@"SELECT Quantity
FROM Runlist WHERE(UserId = @userid)
GROUP BY Quantity", new SqlParameter("@userid", user.Id)).ToList();
foreach (var qty in quantities)
{
// get value here
}
发布于 2019-09-17 14:35:19
在我看来,查询调用是错误的。方法Database.SqlQuery将返回一个IEnumerable -因此在本例中它将接收IEnumerable,最终的ToList()将投影为List。
当你在List上搜索每一项都是List时,我只能想象当EF6将你的字符串值显示为list (可能是一个字符数字)时,你得到的值会有些奇怪。
答案可能是改为使用Database.SqlQuery。正如其他人所说,如果您不想要不同的数量,请从SQL中删除GROUP BY Quantity。
var quantities = db.Database.SqlQuery<string>
(@"SELECT Quantity
FROM Runlist WHERE(UserId = @userid)
GROUP BY Quantity", new SqlParameter("@userid", user.Id)).ToList();
foreach (var qty in quantities)
{
Console.WriteLine("Quantity = " + qty);
}
https://stackoverflow.com/questions/57975930
复制