返回具有匹配ID(特定ID)的字段

时间:2018-10-12 14:36:04

标签: c# asp.net-mvc linq

我有一个主从页面,当您单击请求的查看详细信息时,它将在下表中填充数据。当用户单击请求上的查看详细信息时,如何让第二个表填充具有匹配ID的数据?当我现在进行遍历时,它会找到确实匹配的ID,但是如果我无法捕获所选的项目ID并去查找具有相同ID的行,它们将全部匹配。

Top table is the requests and the bottom table is the request details.

这是我的请求控制器中的代码,可从请求详细信息中获取数据。我正在查找ID,并尝试将其与所选项目进行比较,但即时通讯仍会取回所有记录。

 //Requests Controller 
public ActionResult Index(IA_RequestDetails iA_RequestDetails, IA_Requests iA_Requests, long? id = null)
{

    List<IA_Requests> requestList = db.IA_Requests.ToList();
    List<IA_RequestDetails> newRequestList = db.IA_RequestDetails.ToList();
    var model = new InventoryAnalysisMasterDetailsModel();
    model.RequestDetailsList = newRequestList;
    model.RequestList = requestList;

    if (id != null)
    {
        model.SelectedItems = newRequestList.Find(model => model.RequestId == id && model.SelectedItemsId == id);
        model.SelectedItemsId = id;         
    }

    return View(model);
}

我认为我正在使用foreach语句

foreach (var item in Model.RequestDetailsList)
{
    <tr>
        <td>
            @item.RequestId       
        </td>
        <td>
            @item.Item
        </td>
        <td>
            @item.LineID
        </td>
        <td>
            @Html.ActionLink("Edit Item", "Edit", new { id = item.LineID, controller = "IA_RequestDetails" }) |
            @Html.ActionLink("View Item Details", "Details", new { id = item.LineID, controller = "IA_RequestDetails" })
        </td>
    </tr>
}

非常感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:2)

这个问题让我有些困惑,但想提供帮助。 Find将返回单个Item,因此SelectedItems有点令人困惑。

您想要的东西类似于:

newRequestList.Where(model => model.RequestId == id && model.SelectedItemsId == id);

答案 1 :(得分:0)

按照最初的想法,where子句是我所需要的。这只是我在哪里以及做什么的问题: 在if语句中添加where子句。相当简单,对我来说有点麻烦。

model.RequestDetailsList = newRequestList.Where(x => x.RequestId == model.SelectedItemsId).ToList();