Я полагаю, у вас есть модель под названием Query и API контроллера под названием Data, как показано ниже:
public class Query
{
public string name { get; set; }
public string cusip { get; set; }
public string isin { get; set; }
public string price_type { get; set; }
}
public class DataController : ApiController
{
//GET api/Data
public IEnumerable<database_WICs> Get([FromUri] Query query)
{
var data = from c in db.database_WICs
where c.Name == query.name ||
c.CUSIP == query.cusip ||
c.ISINs == query.isin ||
c.Cover == query.price_type
select c;
return data;
}
}
Ваш метод API GET это хорошо, просто удалить "ToList()". Если вы хотите, чтобы вернуть HttpResponseMessage, вы можете изменить его, как показано ниже:
//GET api/Data
public HttpResponseMessage Get([FromUri] Query query)
{
var data = from c in db.database_WICs
where c.Name == query.name ||
c.CUSIP == query.cusip ||
c.ISINs == query.isin ||
c.Cover == query.price_type
select c;
if (!data.Any())
{
var message = string.Format("No database_WICs was found");
return Request.CreateErrorResponse(HttpStatusCode.NotFound, message);
}
return Request.CreateResponse(HttpStatusCode.OK, data);
}
Но проблема в том, ваш URI является неправильным. URI должен быть, как показано ниже:
/api/Data/?name=STORM&cusip=20&isin=2006-1%20A2&price_type=cvr
Если вы передаете объект JSON к Web API через вызов AJAX, вызов AJAX должен быть, как показано ниже:
var data = {name:"STORM",cusip:"20",isin:"2006-1 20A2",price_type:"cvr"} ;
$.ajax({
url: "/api/Data/",
type: 'GET',
contentType: 'application/json',
data: JSON.stringify(data)
});
Благодарим вас за подробный ответ и объяснение. Апология, чтобы казаться неблагодарной, я хотел бы иметь возможность вызывать строку запроса как «api/data/name? = Storm & price_type = talk». Если это возможно, это может быть достигнуто путем выполнения этого метода в условии Linq IF. – user3070072
Привет, если я прав, вы хотите вызвать строку запроса с помощью LINQ. LINQ - это языковой интегрированный запрос, а не как AJAX, вы можете передать строку запроса, это вызовет функции на стороне сервера. – Lin
Привет, Лин, я использовал вас в качестве основы для решения моей проблемы с строкой запроса. Приносим извинения, если я не был ясен в объяснении своей проблемы, но ваше решение очень помогло. – user3070072