으로 변환 여름 프로그래밍 인턴쉽의 첫 주에 SQL Server 2008 문을 LINQPad을 사용하여 C#으로 변환해야합니다. 일단 내가하고 그것을 제대로 작동하게, 나는 그것을 VS로 입력하고 필요에 따라 조정할 수 있습니다.SQL CASE WHEN 문을 C#
문제점은 변환하는 방법을 모르는 SQL 문을 통해 실행되고 있다는 것입니다. C# 클래스에서는 SQL 문을 C#으로 변환하지 않았습니다. 문자열 변수를 만들고 변수에 SQL 문을 할당 한 다음 변수를 OleDbCommand 개체에 할당했습니다. 나의 멘토는 긴 주말을 쉬는 날이었습니다. 나는 무엇을해야하고 도움이 필요한지에 대해 내 자신과 우둔함을 거의 가지고 있습니다. 이 한두 개의 십여 개가 있습니다. 한 개를 어떻게 할 수 있는지를 알면 나머지를 찾아 낼 수 있습니다. 내가 생각 다음과 같은 코드가 작동하지 않을 된 시도
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]
:이의 라인을 따라 if 문입니다 확신
,[hrs].{Hours] - SUM(
CASE
WHEN [UnitState].[UnitStateTye] <> 'ACTIVE'
THEN [Allocation].[AllocatedEnergyMwh]
ELSE 0
END
/CAST([Unit].[NetDependableCapacity] AS FLOAT)) AS SH
다음은 SQL 문입니다 하지만 어딘가에서 시작해야했습니다 :
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;
}
누군가가 올바른 방향으로 나를 가리킬 수 있습니다. 이 같은
+1 실제로 몇 가지 작업을 dping합니다. 그래서 여기에 새로운 프로그래머가 거의없는 것처럼 보입니다. –
@ Michael Todd : 다른 사람들이 내게 해줄 지 모르겠다. 내가 졸업 할 때이 회사와 일하기를 원하기 때문에 아무것도하지 않는 것은 선택 사항이 아닙니다. 게다가 그들은 나에게 돈을 지불하지 않습니다. –
주먹은 항상 가장 고통 스럽습니다. ;) –