循环使用datatable在web api中创建json

循环使用datatable在web api中创建json,api,web,Api,Web,我试图从返回数据集的WebServices创建一个JSON响应。如何循环数据表并将这些值放入客户机模型中?当我尝试循环遍历datatable时,我得到无效的启动器错误。 这是我的密码: public class ClientsController : ApiController { public IEnumerable<ClientResponseModels> GetAllClients() { //retrieves list of all t

我试图从返回数据集的WebServices创建一个JSON响应。如何循环数据表并将这些值放入客户机模型中?当我尝试循环遍历datatable时,我得到无效的启动器错误。 这是我的密码:

public class ClientsController : ApiController
{
    public IEnumerable<ClientResponseModels> GetAllClients()
    {  
        //retrieves list of all the clients
        var dsClients = ClientRepository.GetAllClients();

        //create a json response object
        ClientResponseModels[] response = new ClientResponseModels[]
        {
            new ClientResponseModels
            {
                UserId= userDetails.UserID,
                UserName=userDetails.LoginName,
                LocationName=centreLocation.ToString(),
                Clients = new List<ClientModels>
                {  
                    foreach(DataRow row in dsClients.Tables[0].rows)
                    {
                        new ClientModels //these values need to come from datatable
                        {
                            Id =Convert.ToInt32(row["client_id"]), 
                            ClientName=Convert.ToString(row["client_nme"])", 
                            DOB= Convert.ToDateTime(row["birth_date]")
                        }
                    }    
                } 
            }
        };
        return response;
    }
    else {
        throw new HttpResponseException(HttpStatusCode.Forbidden);
    }
}
公共类客户端控制器:ApiController
{
public IEnumerable GetAllClient()
{  
//检索所有客户端的列表
var dsClients=ClientRepository.GetAllClients();
//创建json响应对象
ClientResponseModels[]响应=新ClientResponseModels[]
{
新ClientResponseModels
{
UserId=userDetails.UserId,
UserName=userDetails.LoginName,
LocationName=centreLocation.ToString(),
客户=新列表
{  
foreach(dsClients.Tables[0].rows中的DataRow行)
{
新的ClientModels//这些值需要来自datatable
{
Id=Convert.ToInt32(第[“客户端Id”]行),
ClientName=Convert.ToString(第[“客户端”])行),
DOB=Convert.ToDateTime(第[“出生日期]”行)
}
}    
} 
}
};
返回响应;
}
否则{
抛出新的HttpResponseException(HttpStatusCode.Forbidden);
}
}

I您可以使用实体框架更改datacontext配置

        MyDataContext db = new MyDataContext();
        db.Configuration.LazyLoadingEnabled = false;
        db.Configuration.ProxyCreationEnabled = false;

我认为函数是导致代码在查询表中循环的原因。您可以在循环之前先检索数据,例如GetAllClient().ToList()