我对我的一个夏天的编程实习的第一周,一直负责将SQL Server 2008条中语句转换为C#中使用LINQPad 。 一旦我做到这一点,让它正常工作,我可以将其输入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
我敢肯定,这就是线沿线的if语句:
if [UnitState].[UnitStateType] does not equal active
then SH equals [hrs].[Hours] minus the the sum of
[Allocation].[AllocatedEnergyMwh] / (float)[Unit].[NetDependableCapacity].
else
SH = [hrs].[Hours]
试过我下面的代码,我想通不会是去上班,但开始的地方需要:
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;
}
我将不胜感激是有人可以指向我的方向是正确的。