C# 如何使用两个参数获取IEnumerable的值
我使用下面的代码,在编译时不会失败,但我似乎没有正确输入输入代码和参数C# 如何使用两个参数获取IEnumerable的值,c#,linq,asp.net-web-api,C#,Linq,Asp.net Web Api,我使用下面的代码,在编译时不会失败,但我似乎没有正确输入输入代码和参数 public IEnumerable<TimeWorkMonthly> Get(int id,int id1) { using (EmployeeDbEntities Entities = new EmployeeDbEntities()) { var result = Entities.TimeWorkMonthlies.Where(e => e.KartNo == id
public IEnumerable<TimeWorkMonthly> Get(int id,int id1)
{
using (EmployeeDbEntities Entities = new EmployeeDbEntities())
{
var result = Entities.TimeWorkMonthlies.Where(e => e.KartNo == id && e.TermID == id1).ToList();
return result;
}
}
但是我得到了一个404错误
使用输入值(id)时,我从程序中获得正确的输出
你认为问题出在哪里?问题出在路线
http://localhost:49643/api/Employees/1461/9604
无法正确解析参数id1
默认路由如下所示(在WebApiConfig.cs中):
添加另一条路线,该路线也从URL映射id1
:
routes.MapHttpRoute(
name: "API with additional Id",
routeTemplate: "api/{controller}/{id}/{id1}", // URL with TWO parameters
defaults: new { id = UrlParameter.Optional, id1 = UrlParameter.Optional }
);
进一步阅读:。您需要此URL:
http://localhost:49643/api/Employees/1461?id1=9604
问题与通用IEnumerable
接口无关;它只与所使用的托管框架的URL编码约定有关。或者在方法上方添加[Route({id}/{id1}”)]
(或者仅添加[Route({id1}”)]
,具体取决于默认路由)。旁注:您不需要ToList()
,Where
方法返回一个IEnumerable
,您自己的方法也是如此。是的,这是真的,我需要这个url:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}", // only "id" parameter is mapped from URL
defaults: new { id = RouteParameter.Optional }
);
routes.MapHttpRoute(
name: "API with additional Id",
routeTemplate: "api/{controller}/{id}/{id1}", // URL with TWO parameters
defaults: new { id = UrlParameter.Optional, id1 = UrlParameter.Optional }
);