2013-08-20 3 views
-5

정수 값 목록을 제공해야하지만 내 첫 번째 열 값만 가져 오는 저장소에 메서드가 있습니다 .. 어떻게 모든 열 값을 가져올 수 있습니까? 내 서비스에서 ..C에서 메서드에 정수 값 목록을 반환하는 방법

이 저장소에 내 방법 :

public List<int> GetChartInfo(string lineNo, string shiftDateTime, string station) 
{ 
     string query = string.Format("SELECT SUM(QTY_BUILD) AS BUILD_QTY, SUM(QTY_FAIL) AS FAIL_QTY, "+ 
            "DATEPART(HH,BUILD_HOUR) AS SHIFT_HOURS FROM {0} WITH (NOLOCK) "+ 
            "WHERE LINE_NO='{1}' AND BUILD_HOUR >='{2}' AND STATION='{3}' "+ 
            "GROUP BY DATEPART(HH,BUILD_HOUR) ORDER BY SHIFT_HOURS ",_tableName, lineNo, shiftDateTime, station); 

     return MitecsRepository.Fetch<int>(query); 
} 

다음과 같이 내가 내 서비스에서이 방법을 전화 :

var QtyBuildList = _qtyBuildRepository.GetChartInfo(cellName, _currentShiftDateTime, tableName); 

QtyBuildList 만 build_qty d를 받고있다 ata 전용 .. 어떻게 fail_qty 및 shift_hours 데이터를 얻을 수 있습니다.

+3

이 [SQL 주입 (MSDN)] (http://technet.microsoft.com/en-us/library/ms161953(v=sql.105).aspx) – Liam

+0

을 읽어보십시오. EF를 가져 가면 이런 문제를 해결할 수 있습니다. ;) – user853710

+1

SQL injection은 제쳐두고, MitecsRepository.Fetch 루틴 소스 없이는 대답 할 수 없습니다. –

답변

0

왜 클래스를 만들어이 클래스의 목록을 반환하지 않습니까? 예를 들어

public class BuildData 
{ 
    public int BuildQty {get;set;} 
    public int FailQty {get;set;} 
    public int ShiftHours {get;set;} 
} 

그리고는 목록 당신은 당신의 데이터를 원하는 다음 수 있습니다 루프 주위

List<BuildData> BuildDataList = new List<BuildData>(); 

을 만들;

while (ResultSet.Read()) 
{ 

    BuildData data = new BuildData(); 
    data.BuildQty = Convert.ToInt64(ResultSet["BUILD_QTY"]; 
    data.FailQty = Convert.ToInt64(ResultSet["FAIL_QTY"]; 
    data.ShiftHours = Convert.ToInt64(ResultSet["SHIFT_HOURS "]; 
    BuildDataList.Add(data); 
} 

return BuildDataList; 

따라서 하나의 열에 대한 목록이 아닌 BuildData 목록을 반환합니다.

+0

같은 물건을 취급함으로써 EF에서의 작업 – user1989508

0

당신의 방법의 정의에 따르면 당신은 단지 정수의 목록을 되 찾을 수 있습니다.

public List<int> GetChartInfo(

당신은 당신이 필요로하는 값과 일치하는 모든 개체가 쿼리 한 행의 결과를 나타냅니다 이러한 개체의 목록을 반환 사용자 정의 클래스를 만들 수 있습니다.

또 다른 것은 쿼리를 목록으로 바꾸는 것입니다.

var x = MitecsRepository.Fetch<int>(query).ToList(); 

는 다음 중 한

public object GetChartInfo(

return x; 

와 방법의 정의를 변경 그래서 당신은 그것을 박스했다.

아니면 하나의 열

return x.Select(p=>p.Item1) 

이 당신이 할 수있는 물건이 많이 나중에입니다하지만 여전히 EF를 사용하는 것이 당신에게 말할 것입니다하려는 경우 당신은 이런 식으로 뭔가를 할 수 있습니다. 이런 것들을 훨씬 쉽게 해결할 수 있습니다.

+0

감사를 많이 도움이 될 당신이 아주 많이 ... 난 같은 열이 사용자 정의 클래스를 작성하여 정확한 값을 가지고 – user1989508

관련 문제