我想指定提示码为'2041'的prompt.message的值。我已经把if检查,但我不知道如何获得该提示项的消息。
班级结构
public class Prompts
{
public List<Prompt> prompt { get; set; }
}
public class Prompt
{
public string message { get; set; }
public int code { get; set; }
}
到目前为止试过这个:
if(Prompts.prompt.Any(p => p.code == 2041))
{
string message = Prompts.prompt[0].message;
}
答案 0 :(得分:6)
在这种情况下,您应该使用FirstOrDefault()
。 Any
只返回一个布尔值。
var message = Prompts.prompt.FirstOrDefault(p => p.code == 2041)?.message;
在找不到它时会给你null,或者在C#6中给你第一个消息
如果你还没有使用C#6,那么类似的方式就是
var prompt = Prompts.prompt.FirstOrDefault(p => p.code == 2041);
string message;
if (prompt != null) {
message = prompt.message;
}
答案 1 :(得分:1)
要获得满足给定条件的第一项,请使用First
:
string message = Prompts.First(p => p.code == 2041).message;
如果您可能没有任何此类项目,请使用FirstOrDefault
以便它不会抛出(如果找不到该项,它将返回null
。)
如果您有满足条件的多个项目,请使用Where
全部获取。 Any
在这里并不是那么有用。
答案 2 :(得分:0)
两个问题。一个是你在Prompt类上没有代码属性。其次是呼叫&#34;任何&#34;只是让您知道存在符合条件的对象。使用&#34;其中&#34;实际上找到那些对象。
public class Prompts
{
public List<Prompt> prompt { get; set; }
}
public class Prompt
{
public string message { get; set; }
public int code { get; set;}
}
....
var promptsWeCareAbout = Prompts.prompt.Where(p => p.code == 2041);
if(promptsWeCareAbout.Any())
{
string message = promptsWeCareAbout.First().message;
}
答案 3 :(得分:0)
尝试这样的事情
List<Prompt> promptList = new List<Propmt>();
promList = db.Prompts.ToList();
string Message = prompList.Where( p => p.Code == 2041).FirstOrDefault().Message;