如何在C# MVC中检索列表中的特定值

3

我希望能够根据列表中的特定ID检索到列表中的特定值。

这是我的列表值

    public List<strucMaterial> PopulateStructMaterialData()
    {
      List<strucMaterial> populateStructure = new List<strucMaterial>();
        {

            populateStructure.Add(new strucMaterial(){Id = 1, ifOthers = "", materialId = 1, materialNm = "Bricks", structId = 1, structNm = "Walls", insuranceReqId = 0});
            populateStructure.Add(new strucMaterial(){Id = 2, ifOthers = "", materialId = 2, materialNm = "Concrete", structId = 1, structNm = "Walls", insuranceReqId = 0});
            populateStructure.Add(new strucMaterial(){Id = 3, ifOthers = "", materialId = 3, materialNm = "Woods", structId = 1, structNm = "Walls", insuranceReqId = 0});

            populateStructure.Add(new strucMaterial(){Id = 4, ifOthers = "", materialId = 2, materialNm = "Concrete", structId = 2, structNm = "Roof", insuranceReqId = 0});
            populateStructure.Add(new strucMaterial(){Id = 5, ifOthers = "", materialId = 4, materialNm = "Tiles", structId = 2, structNm = "Roof", insuranceReqId = 0});
            populateStructure.Add(new strucMaterial(){Id = 6, ifOthers = "", materialId = 5, materialNm = "Zinc", structId = 2, structNm = "Roof", insuranceReqId = 0});

            populateStructure.Add(new strucMaterial(){Id = 7, ifOthers = "", materialId = 3, materialNm = "Woods", structId = 3, structNm = "Floor", insuranceReqId = 0});
            populateStructure.Add(new strucMaterial(){Id = 8, ifOthers = "", materialId = 6, materialNm = "Reinforced Concrete", structId = 3, structNm = "Floor", insuranceReqId = 0});

        };
        ViewBag.populatebuilding = populateStructure;
        return populateStructure;
    }

我的视图模型

public class strucMaterial
{
    public int buildingInfoID { get; set; }
    public int Id { get; set; }
    public string ifOthers { get; set; }
    public int materialId { get; set; }
    public string materialNm { get; set; }
    public int structId { get; set; }
    public string structNm { get; set; }
    public int insuranceReqId { get; set; }
    public bool isSelected { get; set; }
}

我的观点

                  @{

               List<Insurance.ViewModels.strucMaterial> viewModelSM = ViewBag.populatebuilding;

                for (int i = 0; i < viewModelSM.Count; i++)
                {
                    @Html.Label(viewModelSM[i].structNm)
                    @Html.CheckBox("structureMat", new { @id = "structureMat", @value = viewModelSM[i].Id })
                    @Html.Label(viewModelSM[i].materialNm)
                  <br />
                }

             }

这是我检索materialID和structID的方法

                            int idArray = Convert.ToInt32(structureMat[i]);                     
                        List<strucMaterial> populateID = PopulateStructMaterialData();


                        for (int s = 0; s < populateID.Count; s++ )
                        {

                            if (populateID[s].Id.Equals(idArray))
                            {
                                int matID = populateID[s].materialId;
                                int structID = populateID[s].structId;

                                int a = matID;

                            }
                  }

与其获取materidID和structID的值,它只获取元素的索引值。我的问题是为什么它只读取populateID[s]..直到?为什么不将populate[s].materialId作为整体读取?

谢谢


1
ه½“و‚¨ن½؟用populateID[s].materialIdè®؟é—®materialIdو—¶ï¼Œوک¯هگ¦ه‡؛çژ°ن»»ن½•é”™è¯¯ï¼ں - Hari Prasad
没有任何错误……我怎么才能仅检索到materialId :( - user3643092
1
如果您只想从查询中获取 materiald,则可以简单地执行以下操作:populateID.Where(x=>x.Id == idArray).Select(x=>x.materialId) - Hari Prasad
1
你的代码看起来没问题,你尝试过构建、刷新或重新连接吗?试着去做一下。 - user3431310
哦,它工作了!!我刚刚构建了我的项目,刷新并重新打开,然后它现在显示值。我太傻了。 - user3643092
Hari,我认为你的回答也帮了我,把它作为答案,我会接受它。谢谢你们。 - user3643092
1个回答

2

一篇评论的补充,作者是Hari Prasad:

您可以使用LINQ并编写populateID.First(x=>x.Id == idArray).materialId


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接