早上的人,
我在我的mvc项目中使用c#。我有一个列出家庭成员的索引视图。
这样可以正常工作并撤回数据库中的所有记录。
public ActionResult Index()
{
List<Household> houseRecords = db.Households.ToList();
return View(houseRecords);
}
我创建了另一个名为ListMembers()的列表视图页面,此列表基于家庭成员,因此我希望此视图可以回溯特定于我创建的引用的记录(ClientId)。
我原以为我可以在我的List代码中添加一个where子句,并以ClientId为基础,但我不能100%确定这会有效。
List<Household> houseRecords = db.Households.ToList().Where(x => x.ClientId = x.id);
有人能指出我正确的方向吗?
此致 贝蒂
答案 0 :(得分:0)
假设您要根据通过URL传入的ID过滤列表,可以在操作方法中添加一个参数并使用此参数进行过滤。
请注意,根据问题中的示例,您应该在IQueryable
上执行过滤器逻辑,而不是在调用ToList()
之后,以防止所有记录都被加载到内存中。
// <root>/<controller>/ListMembers/123 (using default route)
public ActionResult ListMembers(int clientId)
{
var houseRecords = db.Households.Where(x => x.ClientId == clientId).ToList();
return View(houseRecords);
}
答案 1 :(得分:0)
它会起作用我相信但你可以这样做
var houseRecords = db.Households.Where(x => x.ClientId = x.id).ToList();
我认为在获得最终名单之前做更好的事情
答案 2 :(得分:0)
我不确定你为什么说“你不认为它会起作用”?
我在你提到的内容中可以看到的问题是
1。
List<Household> houseRecords = db.Households.ToList().Where(x => x.ClientId = x.id);
应更改为
List<Household> houseRecords = db.Households.Where(x => x.ClientId = x.id).ToList();
注意最后的.ToList
由于您要创建名称为
的操作方法ListMembers()
您应该如何创建一个接受客户端ID的操作方法,然后在查询中使用它。所以这样的事情 public ActionResult ListMembers(int clientId) { var houseRecords = db.Households.Where(x =&gt; x.ClientId = clientId).ToList(); 返回查看(houseRecords); } 然后根据你的路线你可以像这样调用这个方法
http://<BaseUrl>/ListMembers?clientId=123