如何基于此SQL创建LINQ查询?

时间:2010-09-25 16:15:09

标签: sql vb.net linq

我尝试在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

谢谢。

3 个答案:

答案 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)

实际上我不知道该怎么做。我是使用LINQ的新手。 票证表包括ID,assigndate,startdate,截止日期,PICname(PIC在“负责人”中,包含负责票证的人员的姓名)。在PICname字段中,还有'(P)'(问题)或'(R)'(请求)将故障单分类为问题和请求。这些是Ticket表中的一些字段。票证就像官员一样处理用户报告的问题。

对不起,我没有得到你所谓的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吗?