2016-01-14 24 views
1

所以我在我的web api控制器中放置了一組存儲過程調用。現在我需要返回綜合結果。 Javascript就像這樣簡單:如何建立和返回一個webapi控制器的結果

var result = [{ 
    objectResult: value 
    },{ 
     arryResult1:[value] 
    },{ 
     arryResult2:[value] 
    }] 

但它c#它需要一個包含2個列表和一個對象的類?然後將其作爲列表返回?這是我迷失方向的地方。

return new List<object> { 
    new { objectResult = builderContact }, 
    new { arryResult1 = floorplanDataResult }, 
    new { arryResult2 = floorplanRelatedResult } 
}; 

恕我直言:如果你希望它匹配正是你在JavaScript,然後返回類型更改爲List<object>並返回答案

[HttpPost] 
    [Route("bigEnchilada")] 
    public List<object> GetBuilderContact(parameter parameter) 
    { 
     object[] parameters = { parameter.company_id, parameter.subdivision_id }; 

     var builderContact = db.Database.SqlQuery<usp_get_builder_contact_data_Result>("sandbox.usp_get_builder_contact_data {0},{1}", 
     parameters).First(); 

     var floorplanDataResult = db.Database.SqlQuery<usp_get_floorplan_data_Result>("sandbox.usp_get_floorplan_data {0},{1}", 
     parameters).ToList(); 

     var floorplanRelatedResult = db.Database.SqlQuery<usp_get_floorplan_related_sections_Result>("sandbox.usp_get_floorplan_related_sections {0},{1}", 
     parameters).ToList(); 

     return (new object[] { 
       new object { builderContact = builderContact }, 
       new object { floorplanDataResult = floorplanDataResult }, 
       new object { floorplanRelatedResult = floorplanRelatedResult } 
      }).ToList(); 
    } 

回答

3

[HttpPost] 
    [Route("builderContact")] 
    public List<usp_get_builder_contact_data_Result> GetBuilderContact(parameter parameter) 
    { 
     object[] parameters = { parameter.company_id, parameter.subdivision_id }; 

     var builderContact = db.Database.SqlQuery<usp_get_builder_contact_data_Result>("sandbox.usp_get_builder_contact_data {0},{1}", 
     parameters).First(); 

     var floorplanDataResult = db.Database.SqlQuery<usp_get_floorplan_data_Result>("sandbox.usp_get_floorplan_data {0},{1}", 
     parameters).ToList(); 

     var floorplanRelatedResult = db.Database.SqlQuery<usp_get_floorplan_related_sections_Result>("sandbox.usp_get_floorplan_related_sections {0},{1}", 
     parameters).ToList(); 

     return ?; 
    } 

更新在這種情況下,以下模型將更加適合(如果您可以更改它,那是):

var result = { 
    objectResult: value, 
    arryResult1: [value], 
    arryResult2: [value] 
} 

在這種情況下你將返回類型設置爲object並返回:

return new { 
    objectResult = builderContact, 
    arryResult1 = floorplanDataResult, 
    arryResult2 = floorplanRelatedResult 
}; 

一點點的更好,不是嗎?

+0

犯規必須像JavaScript。但要澄清你的答案。 '對象'是我需要用類定義的東西嗎?看到更新後發佈請 – texas697

+0

'對象'內置到C# – squill25

+0

只是看到你的額外答案! – texas697

1

你可以簡單地concat他們都?

List<object> allItems = (
          from x in floorplanDataResult.ToList() select new object() 
         ).ToList().Concat(
          from y in floorplanRelatedResult.ToList() select new object() 
         ).ToList(); 
return allItems; 

我不知道,如果你的客戶在同一個有效載荷所期待的,但...

相關問題