将SQL CASE WHEN语句转换为C#

将SQL CASE WHEN语句转换为C#,c#,sql,sql-server,linq-to-sql,C#,Sql,Sql Server,Linq To Sql,我正在暑期编程实习的第一周,任务是将SQL Server 2008语句转换为C#using语句。一旦我做到了这一点,并使其正常工作,我可以将其输入到VS中,并根据需要进行调整 问题是我遇到的SQL语句我不知道如何转换。在我的C#类中,我们没有将SQL语句转换为C#,我们只是创建了一个字符串变量,将SQL语句分配给变量,然后将变量分配给OleDbCommand对象。我的导师请了一天假,度过了一个漫长的周末。我几乎是一个人,不知道该做什么,需要一些帮助。有几十个像这样的,如果我能看到如何做一个,我可

我正在暑期编程实习的第一周,任务是将SQL Server 2008语句转换为C#using语句。一旦我做到了这一点,并使其正常工作,我可以将其输入到VS中,并根据需要进行调整

问题是我遇到的SQL语句我不知道如何转换。在我的C#类中,我们没有将SQL语句转换为C#,我们只是创建了一个字符串变量,将SQL语句分配给变量,然后将变量分配给OleDbCommand对象。我的导师请了一天假,度过了一个漫长的周末。我几乎是一个人,不知道该做什么,需要一些帮助。有几十个像这样的,如果我能看到如何做一个,我可以想出其余的。下面是SQL语句:

,[hrs].{Hours] - SUM(
  CASE 
    WHEN [UnitState].[UnitStateTye] <> 'ACTIVE' 
      THEN [Allocation].[AllocatedEnergyMwh] 
    ELSE 0 
  END 
/ CAST([Unit].[NetDependableCapacity] AS FLOAT)) AS SH
我尝试了以下代码,我认为这不起作用,但需要从某个地方开始:

var results = 

    (from v in VDimUnit     
        join vf in VFactEnergyAllocation on v.UnitKey equals vf.UnitKey
        join vd in VDimGadsEvent on vf.GadsEventKey equals vd.GadsEventKey
        join vt in VDimTime on vf.TimeKey equals vt.TimeKey 
        join vus in VDimUnitState on vf.UnitKey equals vus.UnitKey
    where vd.GadsEventEndTime.Year == 2011 && v.UnitId == "THL3"
    group vf by new {vus.UnitStateType, vf.AllocatedEnergyMwh v.NetDependableCapacity,
        vt.QuarterNum} into groupItem       
    select new {groupItem.Key.QuarterNum, SUM1 = groupItem.Sum(x=> (float)x.AllocatedEnergyMwh /
        groupItem.Key.NetDependableCapacity)}).ToArray();

var resultHours = 
    (from v in VDimTime
    group v by v.QuarterNum into groupItem
    select new {Hours = groupItem.Count(), groupItem.Key}).ToDictionary(x=> x.Key, x=> x.Hours);

var finalResults = 
    (from r in results
    select new {SH_IF_NOT_ACTIVE = resultHours[r.QuarterNum] - r.SUM1,
        Hours = 
        SH_IF_ACTIVE = resultHours[r.QuarterNum]});

    if (SH != "ACTIVE")
    { 
        SH_IF_NOT_ACTIVE;
    }
    else
    {
        SH_IF_ACTIVE;
    }   
如果有人能为我指出正确的方向,我将不胜感激。

类似这样的事情:

Hours = condition ? code when true : code when false;

+1用于实际dping一些工作。这里几乎没有新的程序员能做到这一点。@MichaelTodd:如果我让别人替我做,我就学不会。什么都不做是不行的,因为我毕业后想在这家公司工作。而且他们不会付钱让我滚蛋。第一周总是最痛苦的。;)@广告网:谢谢你的帮助
Hours = condition ? code when true : code when false;