2016-08-12 5 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); 
    }}} 

Так что, если я просто добавьте Distinct в заявлении Выберите в качестве

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

является то, что должно быть достаточно? Или мы должны помещать DISTINCT перед всеми именами столбцов

+0

Вы Trst, что DISTINCT решение? Что в итоге ? – CodeNotFound

+1

yes DISTINCT используется один раз непосредственно после SELECT и перед тем, как вы укажете столбцы – Matt

+0

@CodeNotFound Когда я использую Distinct, нет никакой разницы. – trx

ответ

-1

Используйте различные или если у вас все еще есть проблемы, вы можете переместить результат данных в список и использовать linq для выбора только уникальных строк.

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

взяты из: Select distinct using linq

+1

Можем ли мы сделать это, не используя Linq и напрямую предоставляя их в запросе – trx

+0

это загрузит больше данных, чем необходимо – Matt

+0

Это будет не идеальное решение, а больше работа. – Ginjo

Смежные вопросы