我在从列表中检索信息时遇到一些问题。
在这种情况下,我想从列表中获取名称,最终我希望它变成一个字符串。这就是我所拥有的:
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。但这些都不适合我,因为我可能在某处搞砸了什么。有人可以帮助我吗?
答案 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 / FirstOrDefault,Single / 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