通过ANY查找项目

zar*_*han 0 c# linq

我想指定prompt.message的值,其提示码为'2041'.我已经把if检查,但我不知道如何获得该提示项的消息.

班级结构

public class Prompts
{
    public List<Prompt> prompt { get; set; }
}

public class Prompt
{
    public string message { get; set; }
    public int code { get; set; }
} 
Run Code Online (Sandbox Code Playgroud)

到目前为止试过这个:

if(Prompts.prompt.Any(p => p.code == 2041))
{
    string message = Prompts.prompt[0].message;
}
Run Code Online (Sandbox Code Playgroud)

Ice*_*kle 6

你应该FirstOrDefault()在这种情况下使用.Any将只返回一个布尔值.

var message = Prompts.prompt.FirstOrDefault(p => p.code == 2041)?.message;
Run Code Online (Sandbox Code Playgroud)

在找不到它时会给你null,或者在C#6中给你第一个消息

如果您还没有使用C#6,也会采用类似的方式

var prompt = Prompts.prompt.FirstOrDefault(p => p.code == 2041);
string message;

if (prompt != null) {
    message = prompt.message;
}
Run Code Online (Sandbox Code Playgroud)