C# 如何从itemslist中获取第二个item属性(知道第一个属性)
我有一个C# 如何从itemslist中获取第二个item属性(知道第一个属性),c#,C#,我有一个服务器类: public class CsServerInfo { public string ip { get; set; } public string name { get; set; } } 和服务器列表: public class ServerList { public List<CsServerInfo> serverdata { get; set; } } 但是我不知道怎么去第二家酒店。 感谢您的帮助。首先使用Where子句筛选所有需
服务器类
:
public class CsServerInfo
{
public string ip { get; set; }
public string name { get; set; }
}
和服务器列表
:
public class ServerList
{
public List<CsServerInfo> serverdata { get; set; }
}
但是我不知道怎么去第二家酒店。
感谢您的帮助。首先使用
Where
子句筛选所有需要的项目,然后在这些项目上使用选择以获取ip
var item = serverList.serverdata
.Where(p => p.name == server.Text)
.Select(p => p.ip)
在列出过滤器后,可以使用选择方法进行投影:
var item = serverList.serverdata
.Where(p => p.name == server.Text)
.Select(p=>ip);
您也可以尝试以下方法:
var server = serverList.serverdata
.FirstOrDefault(p => p.name == server.Text);
if(server!=null)
{
// the server found
var ip = server.ip;
}
但是,请注意,如果有多个服务器具有相同的名称,则上述方法将返回第一个找到的服务器。请尝试类似的方法
serverList.serverdata.FirstOrDefault(p => p.Name == server.Text).ip;
或者。一旦你选择了它。您已经选择了它,它现在在var x中,对吗
所以我认为你可以在VarX中访问它。类似于
MessageBox.Show(x.ip);
你说的“搜索name属性”的代码实际上不起作用。此代码:
var item = serverList.serverdata.Select(p => p.name == server.Text);
返回布尔值列表,指示列表中的每个项是否符合您的条件
这段类似的代码实际上可以满足您的需要:与指定名称匹配的第一项:
var item = serverList.serverdata.FirstOrDefault(p => p.name == server.Text);
然后您可以访问该属性:
var ip = item.ip;
请注意,FirstOrDefault
将在未找到匹配项时返回null
,因此您应该在尝试访问它之前检查item==null
。其中
将返回一个IEnumerable
,而不是一个item@Jonesopolis哎呀!谢谢,我本想先做的,但不是在哪里!
var ip = item.ip;