我尝试在Visual Basic中将这种sql查询转换为linq, 但我不知道如何赚百分比..我也不知道如何使用linqpad来创建这个linq 请帮忙。
SELECT CASE RIGHT(PICName, 3)
WHEN '(P)' THEN 'Problem'
WHEN '(R)' THEN 'Request'
ELSE 'Other'
END AS [Requests/Problems],
COUNT(RIGHT(PICName, 3)) AS Amount,
CONVERT(decimal(18, 2),
CONVERT(Decimal(18, 2), COUNT(RIGHT(PICName, 3))) /
CONVERT(Decimal(18, 2),
(SELECT COUNT(RIGHT(PICName, 3)) FROM Ticket))
* 100) AS [% Amount]
FROM Ticket
GROUP BY RIGHT(PICName, 3)
我需要将结果导出到datagrid 它就像:
Requests/Problems | Amount | % Amount
------------------------------------------------------
Problem | 20 | 20.00
Request | 45 | 45.00
Other | 35 | 35.00
谢谢。
答案 0 :(得分:1)
让我们首先将其剥离到重要部分:
SELECT RIGHT(PICName, 3),
COUNT(RIGHT(PICName, 3)) AS Amount,
COUNT(RIGHT(PICName, 3)) / (SELECT COUNT(RIGHT(PICName, 3)) FROM Ticket))
* 100) AS [% Amount]
FROM Ticket
GROUP BY RIGHT(PICName, 3)
从那里看起来很容易:
int count = db.Tickets.Count();
var query = from t in db.Tickets
group by t.PicName.Substring(0,3) in g
select new
{
Requests_Problems = g.Key == "(P)" ? "Problem" :
g.Key == "(R)" ? "Request" : "Other",
Amount = g.Count,
PercAmount = (g.Count * 100.0) / count
}
答案 1 :(得分:0)
你可以尝试一下这个工具 - http://www.sqltolinq.com/ - 我从来没有用过它,但之前看过这个推荐。
答案 2 :(得分:0)
对不起,我没有得到你所谓的EF ..但我想,你知道这是linq to sql。
在我提出这个问题之前,我尝试过LINQer(来自http://www.sqltolinq.com/),但它无法将“COUNT”转换为LINQ。它无论如何都不是免费的
感谢James,但我认为我无法将其转换为可视化的基本代码。也许,你可以解释一下Key
是什么?在group by t.PicName.Substring(0,3) in g
,真的是in
而不是into
吗?对不起因为我真的是LINQ的初学者,但我必须在这个应用程序中使用LINQ ..
嘿,你们中的任何人都知道从哪里开始了解像我这样的初学者的LINQ to SQL吗?