filterData linq query - EntityCommandExeceptionException error
-
Dear all, When I try to query 24 values of name parameter , api/test/name=stop,tap,app...(24 names values), I get a following EntityCommandExeceptionException error as an output response:
"Message":"An error has occurred.","ExceptionMessage":"Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.","ExceptionType":"System.Data.SqlClient.SqlException
public HttpResponseMessage get([FromUri] Query query)
{
var data = db.database_bd.AsQueryable();if (query.startDate != null) { data = data.Where(c => c.UploadDate >= query.startDate); } // If any other filters are specified, return records which match any of them: var filteredData = new List\>(); if (!string.IsNullOrEmpty(query.name)) { var ids = query.name.Split(','); foreach (string i in ids) { filteredData.Add(data.Where(c => c.Name != null && c.Name.Contains(i))); } } // If no filters passed, return all data. // Otherwise, combine the individual filters using the Union method // to return all records which match at least one filter. if (filteredData.Count != 0) { data = filteredData.Aggregate(Queryable.Union); } ****if (!data.Any())** //line causing the error** { var message = string.Format("No data was found"); return Request.CreateErrorResponse(HttpStatusCode.NotFound, message); } return Request.CreateResponse(HttpStatusCode.OK, data); } }
Do I have to assign count value to filterdata, or Is their certain threshold, to search criteria, if using the split function? Any help would be very much appreciated. Thanks in advance.
-
Dear all, When I try to query 24 values of name parameter , api/test/name=stop,tap,app...(24 names values), I get a following EntityCommandExeceptionException error as an output response:
"Message":"An error has occurred.","ExceptionMessage":"Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.","ExceptionType":"System.Data.SqlClient.SqlException
public HttpResponseMessage get([FromUri] Query query)
{
var data = db.database_bd.AsQueryable();if (query.startDate != null) { data = data.Where(c => c.UploadDate >= query.startDate); } // If any other filters are specified, return records which match any of them: var filteredData = new List\>(); if (!string.IsNullOrEmpty(query.name)) { var ids = query.name.Split(','); foreach (string i in ids) { filteredData.Add(data.Where(c => c.Name != null && c.Name.Contains(i))); } } // If no filters passed, return all data. // Otherwise, combine the individual filters using the Union method // to return all records which match at least one filter. if (filteredData.Count != 0) { data = filteredData.Aggregate(Queryable.Union); } ****if (!data.Any())** //line causing the error** { var message = string.Format("No data was found"); return Request.CreateErrorResponse(HttpStatusCode.NotFound, message); } return Request.CreateResponse(HttpStatusCode.OK, data); } }
Do I have to assign count value to filterdata, or Is their certain threshold, to search criteria, if using the split function? Any help would be very much appreciated. Thanks in advance.
I have tried changing how the filterdata is added to the list, but I am still experiencing the same issue as my orginal post:
if (!string.IsNullOrEmpty(query.name)) { var ids = query.name.Split(','); foreach (string i in ids) { **var list = data.Where(c => c.Name != null && c.Name.Contains(i)).AsQueryable(); filteredData.Add(list);** } }
could someone please provide any assistance. Many thanks.