使用GET API方法,我需要获取具有Entity Framework的表的所有记录的计数。该方法接收一个表名,然后我得到程序集并获取所有记录。但结果是一个JSON,我还没有找到如何计算这个。
这是我的代码:
try
{
Type t = Type.GetType("Iwg.Transverse.Business." + tableName + "Manager, Iwg.Transverse.Business, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
MethodInfo method = t.GetMethod("GetAll", Type.EmptyTypes);
var executionMethod = method.Invoke(Activator.CreateInstance(t), null);
JsonResult<object> json = this.Json(executionMethod);
//This line does not work.
//return this.Json(json .Count + 1);
}
catch (Exception e)
{
return this.Json("Error getting the table " + tableName + "\nError " + e.Message);
}
答案 0 :(得分:1)
从您的问题来看,library(dplyr)
library(ggplot2)
library(shiny)
raw <- diamonds
cutlist <- sort(unique(as.vector(raw$cut)), decreasing = FALSE) %>%
append("All", after = 0)
colorlist <- sort(unique(as.vector(raw$color)), decreasing = FALSE) %>%
append("All", 0)
server <- function(input, output) {
output$table <- renderDataTable({
if(input$colorchoose == "All") {
filt1 <- quote(color != "@?><")
} else { filt1 <- quote(color == input$colorchoose) }
if (input$cutchoose == "All") {
filt2 <- quote(cut != "@?><")
} else { filt2 <- quote(cut == input$cutchoose) }
filter_(raw, filt1) %>% filter_(filt2) } ) }
ui <- shinyUI(fluidPage(
titlePanel("Dynamic Filter Test App"),
sidebarLayout(
sidebarPanel(
selectizeInput("cutchoose", "Cut:", cutlist),
selectizeInput("colorchoose", "color:", colorlist) ),
mainPanel( dataTableOutput("table") ) ) ) )
shinyApp(ui = ui, server = server)
是否返回JSON数组,或者它是否返回某种GetAll
(或其他东西)然后转换为JSON,这一点并不完全清楚。 (问题的内容似乎暗示前者,但代码似乎是后者。)
如果IEnumerable
总是返回表示项目数组的JSON字符串,那么您可以执行以下操作来获取计数:
GetAll
如果int count = Newtonsoft.Json.Linq.JArray.Parse((string)executionMethod).Count;
方法总是返回某种GetAll
而不是JSON,那么您可以执行以下操作来获取计数:
IEnumerable
(请注意,您需要在代码顶部使用int count = ((IEnumerable)executionMethod).Cast<object>().Count();
才能实现此目的。)
如果using System.Linq;
返回其他内容,例如JSON 对象(不是数组但可能包含数组)或其他类型的对象,那么我们需要了解它的更多细节。
答案 1 :(得分:0)
如果没有可用的方法,我想你可以单独做一个简单的foreach循环。
int count=0;
foreach (var package in json)
{
count = count++;
}
return this.Json(count.ToString());
来自here的编辑回复:
dynamic response = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<dynamic>(json);
return (response.Length);