2016-08-12 2 views
0

현재 Oracle DB를 쿼리하고 결과를 JSON 형식으로 반환합니다. 쿼리 결과가 더 많은 중복 행을 반환합니다. 컨트롤러는 아래웹 API의 고유 행 반환

public HttpResponseMessage Getdetails([FromUri] string[] Column) 
    { 
    List<string> selectionStrings = new List<string>(); 
    string connStr = ConfigurationManager.ConnectionStrings["PConnection"].ConnectionString; 
    using (OracleConnection dbconn = new OracleConnection(connStr)) 
    { 
     DataSet userDataset = new DataSet(); 
     var colDict = new Dictionary<string, string>() 
     { 
     {"CATEGORY", "STCD_PRIO_CATEGORY_DESCR.DESCR"}, 
     {"SESSION_NUMBER", "STCD_PRIO_CATEGORY_DESCR.SESSION_NUM"}, 
     {"SESSION_START_DATE","Trunc(STCD_PRIO_CATEGORY_DESCR.START_DATE)"}, 
     {"SESSION_START_TIME","STCD_PRIO_CATEGORY_DESCR.START_DATE"}}}; 
      foreach (string col in Column) 
      { 
       string selector = colDict[col]; 
       selectionStrings.Add(string.Format("{0} AS {1}", selector, col)); 
      } 
      string selectString = string.Join(",", selectionStrings); 

      var strQuery = string.Format(@"SELECT {0} 
          FROM 
          STCD_PRIO_CATEGORY_DESCR", selectString); 
    }}} 

같은 그래서 난 그냥 그 충분해야한다

var strQuery = string.Format(@"SELECT DISTINCT {0} 
          FROM 
          STCD_PRIO_CATEGORY_DESCR", selectString); 

으로 선택 성명에서 고유 추가 할 경우입니까? 또는 모든 열 이름 앞에 DISTINCT를 넣어야합니까?

+0

당신이 DISTINCT 솔루션 있음을 TRST 적이 :

var result = myList.GroupBy(test => test.id) .Select(grp => grp.First()) .ToList(); 

은에서 가져온? 그 결과는 무엇입니까? – CodeNotFound

+1

예 DISTINCT는 SELECT 후에 한 번만 사용하고 열을 지정하기 전에 사용합니다. – Matt

+0

@CodeNotFound Distinct를 사용할 때 차이점은 없습니다. – trx

답변

-1

distinct를 사용하거나 데이터 결과를 목록으로 옮기고 linq을 사용하여 고유 행만 선택할 수있는 문제가 여전히 남아있는 경우. Select distinct using linq

+1

Linq를 사용하지 않고 직접 입력 할 수 있습니까? 쿼리 – trx

+0

에있는 경우이 값은 필요한 것보다 많은 데이터를로드합니다. – Matt

+0

이상적인 솔루션은 아니지만 해결 방법이 더 많습니다. – Ginjo