2016-04-20 2 views
0

Ниже приведена упрощенная версия метода веб-службы, которая извлекает табличные данные из хранимой процедуры SQL для перехода к интерфейсу. Объект allLocations, возвращаемый методом, имеет тип ObjectResult. Как я могу добавить больше «столбцов» во время выполнения? Значения новых столбцов будут вставлены на основании некоторого условия if/else. Любая помощь приветствуется.ASP.NET API/C# ObjectResult - добавление дополнительных столбцов во время выполнения

// GET: api/Locations/GetLocations 
    [HttpGet] 
    public IEnumerable<sp_GetLocations_Result> GetLocations() 
    { 

     // Initial object allLocations of ObjectResult type 
     var allLocations = geoDB.sp_GetLocations(); 

     foreach (var loc in allLocations) 
     { 
      // at runtime add more columns to tabular 
      // data and populate them based on some conditions 
     } 

     return allLocations; // allLocations object with more column now 
    } 

Пример: 1) Исходные allLocations

Country  City 
France  Paris 
USA   New York 

2) Возвращаемый объект после добавления дополнительных столбцов

Continent   Country  City 

Europe    France  Paris 

North America  USA   New York 

ответ

0

Мои попытки объединить два ObjectResult объекты типа во время выполнения для достижения расширенной табличная структура данных не была успешной, но я нашел простое решение, которое я хотел бы разделить.

Вы в основном изменить модель класса sp_GetLocations_Result, из которого инстанцированного geoDB - добавить еще один, Continent свойства:

public partial class sp_GetLocations_Result 
{ 
    public string Country { get; set; } 
    public string City{ get; set; } 
    public string Continent {get; set;} 
} 

И затем внутри цикл Еогеаспа присвоить значение континента на это имущество, основываясь на некоторых, если/else условие. Другими словами, вы получаете два значения, город и страну, из хранимой процедуры, а третье значение - континент - добавляется во время выполнения.

foreach (var loc in allLocations) 
{ 
     if(some condition here) 
     { 
     loc.continent = "Europe"; // for example 
     } 
} 

В конце вы получаете расширенную табличную структуру, готовую для переднего конца.

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