从列表中检索项目

时间:2014-01-24 20:09:41

标签: c# 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;
    }
}

我尝试过使用一些东西。像Contains,Find,FindIndex和where。但这些都不适合我,因为我可能在某处搞砸了什么。有人可以帮助我吗?

5 个答案:

答案 0 :(得分:4)

您必须选择患者。如果患者的数据完全相同,那么您可以使用LINQ的第一个

patientdata.First().Name

但是,如果它们都不同,那么您可以将列表映射为仅具有名称

patientdata.Select(x=>x.Name)

此时,您仍需要遍历列表以显示每个名称或您需要的任何名称。


正如Henk所指出的,如果这总是一个项目的列表,那么你可以使用

patientdata.Single().Name

* Single的警告来自MSDN

  

返回序列的唯一元素,如果序列中没有一个元素,则抛出异常。

答案 1 :(得分:3)

你有一个对象列表,你想要显示每个对象的属性,然后你必须访问列表中的每个对象,然后访问它的属性。类似的东西:

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);

答案 2 :(得分:1)

尝试

string name = string.Empty;
var pd = patientData.FirstOrDefault();
if(pd != null)
     name = pd.Name

此代码获取返回的第一个项目或null。 如果它不是null,则它将Name属性值检索为字符串变量名。

顺便提一下,如果你现在不想学习linq,你可以访问List&lt;&gt;通过索引如:

 patientData[0].Name

在检查Name属性之前,您仍然需要检查patientData [0]是否为空。

答案 3 :(得分:1)

您可能想要使用Linq。 Linq允许您轻松浏览列表并获得所需内容。

例如,如果您希望患者名为“Johan”:

ExtendPatientInfo patient = patientdata.Where(x => x.Name == "Johan").FirstOrDefault();
string name = patient.Name;

答案 4 :(得分:0)

如果我理解你的问题,你正在寻找类似的东西

ExtendPatientInfo patient = 
         patientdata.FirstOrDefault(x => x.patientcode == patientcode);

return 
    (patient != null)
        ? patient.Name
        : null