首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在EF 6中使用原始sql查询循环行?

如何在EF 6中使用原始sql查询循环行?
EN

Stack Overflow用户
提问于 2019-09-17 13:59:36
回答 2查看 152关注 0票数 0

如何从下面的查询中获取并循环这些值?查询返回计数。

代码语言:javascript
运行
AI代码解释
复制
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)
{

}

这是查询的结果。

代码语言:javascript
运行
AI代码解释
复制
Quantity
---------
1250
1750
2500
5000
5250
6250
11500
12250
12500
15500
17000
164250

EN

回答 2

Stack Overflow用户

发布于 2019-09-17 14:27:31

将查询替换为如下所示,以获取数量计数

代码语言:javascript
运行
AI代码解释
复制
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

}
票数 1
EN

Stack Overflow用户

发布于 2019-09-17 14:35:19

在我看来,查询调用是错误的。方法Database.SqlQuery将返回一个IEnumerable -因此在本例中它将接收IEnumerable,最终的ToList()将投影为List。

当你在List上搜索每一项都是List时,我只能想象当EF6将你的字符串值显示为list (可能是一个字符数字)时,你得到的值会有些奇怪。

答案可能是改为使用Database.SqlQuery。正如其他人所说,如果您不想要不同的数量,请从SQL中删除GROUP BY Quantity。

代码语言:javascript
运行
AI代码解释
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57975930

复制
相关文章

相似问题

领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档