![](/img/trans.png)
[英]Retrieving an object from a generic List by property value of an Item in the list
[英]Retrieving item from list
我在从列表中检索信息时遇到一些问题。
在这种情况下,我想从列表中获取名称,最终我希望将其转换为字符串。 这就是我所拥有的:
public string ShowName(int patientcode)
{
List<ExtendPatientInfo> patientdata = dk.RetrieveList(patientcode);
string name = patientdata. <What here?>
return name;
}
在ExtendPatientInfo类中,我认为这没问题:
private string name;
public ExtendPatientInfo(string name)
{
this.name = name;
}
public string Name
{
get
{
return name;
}
}
我尝试使用一些东西。 像包含,查找,FindIndex和位置。 但是这些都不对我有用,因为我可能在某个地方弄乱了东西。 有人可以帮助我吗?
您必须选择患者。 如果对于患者来说所有数据都相同,则可以使用LINQ的First
patientdata.First().Name
但是,如果它们都不同,则可以将列表映射为仅具有名称
patientdata.Select(x=>x.Name)
此时,您仍然需要遍历列表以显示每个名称或所需的名称。
正如Henk所指出的,如果这始终是一项的列表,那么您可以使用
patientdata.Single().Name
*有关Single
的警告来自MSDN
返回序列中的唯一元素,如果序列中不存在一个元素,则引发异常。
好了,您有一个对象列表,并且想要显示每个对象的属性,然后必须访问列表中的每个对象,然后访问它的属性。 就像是:
foreach(var item in patientdata)
{
Console.WriteLine(item.Name);
//rest of the fields
}
如果要从列表中选择单个对象,则根据需要使用First / FirstOrDefault , Single / SingleOrDefault 。 但是您需要一个单独的对象来访问它的属性。 您不能直接从列表访问属性。
var item = patientData.FirstOrDefault();
if(item != null)
Console.WriteLine(item.Name);
尝试
string name = string.Empty;
var pd = patientData.FirstOrDefault();
if(pd != null)
name = pd.Name
此代码获取返回的第一项或为null。 如果不为null,则将Name属性值检索为字符串变量名称。
顺便说一句,如果您现在不想学习linq,则可以通过类似以下内容的索引访问List <>:
patientData[0].Name
在检查Name属性之前,您仍然需要检查PatientData [0]是否不为null。
您可能要使用Linq 。 Linq使您可以轻松地遍历列表并获得所需的内容。
例如,如果您想要名为“ Johan”的患者:
ExtendPatientInfo patient = patientdata.Where(x => x.Name == "Johan").FirstOrDefault();
string name = patient.Name;
如果我理解您的问题,那么您正在寻找这样的东西
ExtendPatientInfo patient =
patientdata.FirstOrDefault(x => x.patientcode == patientcode);
return
(patient != null)
? patient.Name
: null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.