如何从itemslist获取第二项属性,知道第一项

时间:2016-06-28 21:15:39

标签: c#

我有Server class

public class CsServerInfo
{
    public string ip { get; set; }
    public string name { get; set; }
}

ServerList

public class ServerList
{
    public List<CsServerInfo> serverdata { get; set; }
}

现在来自ServerList这是我希望得到ip string属性Item属性的name属性的ip,我知道name="newserver"属性。

基本上我想说一下var item = serverList.serverdata.Select(p => p.name == server.Text); 项目的# Remove old ppa: and its packages sudo add-apt-repository ppa:ondrej/php5-5.6 --remove --yes sudo apt-get --purge remove php5-common # Add the new ppa: sudo add-apt-repository ppa:ondrej/php sudo apt-get update # If you are using it with Apache, run: sudo apt-get install libapache2-mod-php5.6 # If you are using it with Nginx, run: sudo apt-get install php5.6-fpm 属性。

我知道我可以搜索这样的名字属性:

{{1}}

但我不知道怎么去第二个房产。 谢谢你的帮助。

4 个答案:

答案 0 :(得分:0)

首先使用Where子句过滤所需的所有内容,然后对这些项目使用Select获取ip

var item = serverList.serverdata
                     .Where(p => p.name == server.Text)
                     .Select(p => p.ip)

答案 1 :(得分:0)

您可以在列出过滤器后使用Select方法进行投影:

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

但请注意,如果有多个服务器具有相同名称,则上述方法将返回第一个找到的服务器。

答案 2 :(得分:0)

您说“搜索名称属性”的代码实际上不起作用。这段代码:

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是否正确。{/ p>

答案 3 :(得分:-1)

尝试类似

的内容
serverList.serverdata.FirstOrDefault(p => p.Name == server.Text).ip;

或者。一旦你选择它。你选择了它,现在是var x吧?

所以我认为你可以在var x中访问它。像...这样的东西。

MessageBox.Show(x.ip);