繁体   English   中英

从列表中检索项目

[英]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 / FirstOrDefaultSingle / 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM