sfi*_*_29 -1 c# linq arrays class object
采用以下示例类:
public class Questions
{
public Int32 QuestionId { get; set; }
public String Question { get; set; }
public String Answer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以下数组:
var questionArray = new Questions[]
{
new Questions {QuestionId = 1, Question = "How old are you?", Answer = "32"},
new Questions {QuestionId = 2, Question = "What is your name?", Answer = "John"},
new Questions {QuestionId = 3, Question = "How tall are you?", Answer = "6'"}
};
Run Code Online (Sandbox Code Playgroud)
使用LINQ,我想得到Answer
指定的QuestionId
.例如,如果我给QuestionId
2,结果将是'John'.
我希望能够提出一个特定问题的答案来填充一个单独的DTO.即:
var person = new PersonDto {Name = <single line LINQ goes here>};
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只能使用以下方法获得答案:
foreach (var q in questionArray.Where(q => q.QuestionId == 2))
{
var answer = q.Answer;
}
Run Code Online (Sandbox Code Playgroud)
这可能在一行代码中吗?
例如Single
来自Linq的可能Single
会在有多个答案时抛出异常.
var answer = questionArray.Single(x=>x.QuestionId == 2).Answer;
Run Code Online (Sandbox Code Playgroud)
这个答案假定一个问题只有一个答案(并且总是存在).SingleOrDefault
如果您不确定是否存在答案,则可以添加并检查null.或者您可以添加Where
子句以获得多个答案,例如:
var answers = questionArray.Where(x=>x.QuestionId == 2).Select(x=>x.Answer);
Run Code Online (Sandbox Code Playgroud)
如果没有问题的答案,上面的片段不会失败,它将返回空序列.您可以测试它是否有值并First
在其上运行.
归档时间: |
|
查看次数: |
10605 次 |
最近记录: |