如何将保存为01010位的数据转换为类对象中的字段
本文关键字:对象 字段 转换 数据 保存 01010位 | 更新日期: 2023-09-27 18:14:12
我有两个包含真/假数据的变量。第一个变量可以为空,但第二个变量总是非空。两个变量的长度总是相同的。
var AnswerGridCorrect = "000111"; // or null
var AnswerGridResponses = "000011";
我怎么能把这个数据变成一个面向对象的形式。我已经创建了下面的类。以下是我需要的转换为JSON时的输出:
"answerswers":[ // Json conversion made Answers into answers
{"correct":null,"response":true},
{"correct":null,"response":true},
{"correct":null,"response":true},
{"correct":null,"response":false}
}
请注意,我正在使用LINQ来输出数据,所以我认为我需要的是一个带有参数的函数,如下所示:
.Select((t, index) => new {
Answer = t.Answer,
Answers = makeAnswer(t.AnswerGridCorrect,
t.AnswerGridResponses)
});
我不确定这是否有帮助,但这里是我从JSON中执行此操作时使用的类:
public class AnswerRow
{
public bool? Correct { get; set; }
public bool Response { get; set; }
}
public class AnswerRowList
{
public IList<AnswerRow> AnswerRows { get; set; }
}
下面是makeAnswers方法的实现:
public List<AnswerRow> makeAnswers(string c, string r)
{
var result = new List<AnswerRow>();
for(var i=0; i<r.Length; i++)
{
result.Add(
new AnswerRow {
Correct = c!=null?new Nullable<bool>(c[i]=='1'):null,
Response = r[i]=='1'
});
}
return result;
}
Rene的答案可能是正确的,但这是Linq的(不必要的复杂)方式:
AnswerRowList MakeAnswer(string answerGridCorrect, string answerGridResponses)
{
return new AnswerRowList()
{
AnswerRows = answerGridResponses.Zip(
answerGridCorrect == null ?
Enumerable.Repeat<bool?>(null, answerGridResponses.Length) :
answerGridCorrect.Select(x => new Nullable<bool>(x == '1')),
(r, c) => new AnswerRow()
{
Correct = c,
Response = r == '1'
}).ToList()
};
}