Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从itemslist中获取第二个item属性(知道第一个属性)_C# - Fatal编程技术网

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;