【发布时间】:2014-11-05 13:30:12
【问题描述】:
我创建了一个名为studentRecord 的类,它包含多个属性,例如Student Number, First Name, Last Name, Courses, and Credit Hours,用于跟踪个别学生的记录。我还创建了一个名为List<studentRecord> lstRecords = new List<studentRecord>(); 的list,用于存储各种对象(学生)。
我了解通过使用lstRecords.Add(); 添加student 对象,但在编辑对象时遇到了麻烦。用户应该能够输入学生编号,然后能够访问和编辑该对象的特定实例的属性。我想出了这个代码:
StudentRecord editRecord = lstRecords.Find(indexRecord =>
indexRecord.intStudentNumber == intChosenRecord);
(顺便说一句,intChosenRecord 是我声明的一个变量,用于跟踪他们正在寻找的索引)
我知道StudentRecord 正在声明一个该类型的新对象,而editRecord 是我的新对象的名称。但是,我在使用 .Find() 方法时遇到了问题。我意识到.Find() 在列表中搜索以找到与输入匹配的 something。因此,我假设intChosenRecord 是程序正在搜索的内容。
但是,我不知道indexRecord 是什么!这是唯一一次在代码中使用它,我可以将其更改为我想要的任何名称而不会出错。有人能解释一下这段代码的作用吗?indexRecord 是什么?
【问题讨论】:
-
它是当前在 LINQ 表达式中处理的元素的简单别名。它也可以称为超人。所以总而言之,这意味着:找到所有满足条件的元素(我们称之为 indexRecord)。
-
您可以轻松地执行以下操作:Index= lstRecords.IndexOf(editRecord);
-
我不确定 Find() 在这种情况下是否是正确的方法;我会使用Single(),因为您应该只得到一个结果,并且如果有多个结果,您会希望出现错误。