转换包含 CASE 值的存储过程?
我有一个基于 CASE 值创建字段的存储过程。我如何在 LINQ 中执行相同的操作?有什么想法吗?
基本上这是旧的存储过程(为了方便起见被截断)
SELECT M.Period AS 'Period' ,
C.Code AS 'Group' ,
C.ClientCode AS 'Code' ,
C.ClientName AS 'Name' ,
CASE WHEN ( SELECT SUM(Amount) AS Expr1
FROM M
WHERE ( ClientCode = C.ClientCode )
GROUP BY ClientCode
) = 0 THEN 'Balanced'
WHEN ( SELECT SUM(Amount) AS Expr1
FROM M
WHERE ( ClientCode = C.ClientCode )
GROUP BY ClientCode
) > 0 THEN 'Pending'
END AS 'Status' ,
正如您从上面看到的,案例选择了一个像这样的值
CASE WHEN ( SELECT SUM(Amount) AS Expr1
FROM M
WHERE ( ClientCode = C.ClientCode )
GROUP BY ClientCode
) = 0 THEN 'Balanced'
WHEN ( SELECT SUM(Amount) AS Expr1
FROM M
WHERE ( ClientCode = C.ClientCode )
GROUP BY ClientCode
) > 0 THEN 'Pending'
END AS 'Status' ,
所以我已经完成了所有的连接,到目前为止我已经做到了并且它有效。
var test = from c in C join h in H on c.Code
equals h.Code join m in M on c.ClientCode
equals m.ClientCode
select new
{
Period=m.Period,
Group=c.Code,
Code= c.ClientCode,
Name= c.ClientName,
<-- Here is where I need the to display the correct case value-->
};
我将不胜感激任何反馈或帮助。
I have a stored procedure that creates a field bases on a CASE value. How do I do the same in LINQ? Any ideas?
Basically this is the old stored procedure (truncated for ease)
SELECT M.Period AS 'Period' ,
C.Code AS 'Group' ,
C.ClientCode AS 'Code' ,
C.ClientName AS 'Name' ,
CASE WHEN ( SELECT SUM(Amount) AS Expr1
FROM M
WHERE ( ClientCode = C.ClientCode )
GROUP BY ClientCode
) = 0 THEN 'Balanced'
WHEN ( SELECT SUM(Amount) AS Expr1
FROM M
WHERE ( ClientCode = C.ClientCode )
GROUP BY ClientCode
) > 0 THEN 'Pending'
END AS 'Status' ,
As you can see from above the case picks a value like so
CASE WHEN ( SELECT SUM(Amount) AS Expr1
FROM M
WHERE ( ClientCode = C.ClientCode )
GROUP BY ClientCode
) = 0 THEN 'Balanced'
WHEN ( SELECT SUM(Amount) AS Expr1
FROM M
WHERE ( ClientCode = C.ClientCode )
GROUP BY ClientCode
) > 0 THEN 'Pending'
END AS 'Status' ,
So I have done all my joins and I have this so far and it works.
var test = from c in C join h in H on c.Code
equals h.Code join m in M on c.ClientCode
equals m.ClientCode
select new
{
Period=m.Period,
Group=c.Code,
Code= c.ClientCode,
Name= c.ClientName,
<-- Here is where I need the to display the correct case value-->
};
I would appreciate any feedback or help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个
Try this one out
如果我正确理解了这个问题,那么下面的内容应该可以满足您的需求。
If I understand the question correctly then something like below should work for your needs.
像这样的东西吗?
您可能需要调整总和字段(我不知道它存储在哪个表中),并将条件运算符转换为可能的清洁扩展方法,但它应该让您走上正确的轨道。
Something like this?
You might need to adjust the sum field (i don't know which table it's stored), and convert the conditional operator to maybe an extension method for cleanliness, but it should get you on the right track.