C# 如何将01010位的数据转换为类对象中的字段?

C# 如何将01010位的数据转换为类对象中的字段?,c#,C#,我有两个包含真/假数据的变量。第一个变量可以为null,但第二个变量始终为非null。两个变量的长度始终相同 var AnswerGridCorrect = "000111"; // or null var AnswerGridResponses = "000011"; 如何将这些数据更改为面向对象的形式。我已经创建了类,如下所示。以下是转换为JSON时我需要输出的样子: "answers":[ // Json conversion made Answers into answe

我有两个包含真/假数据的变量。第一个变量可以为null,但第二个变量始终为非null。两个变量的长度始终相同

var AnswerGridCorrect = "000111"; // or null
var AnswerGridResponses = "000011";
如何将这些数据更改为面向对象的形式。我已经创建了类,如下所示。以下是转换为JSON时我需要输出的样子:

"answers":[        // 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; }
}
public class AnswerRow
{
公共bool?正确{get;set;}
公共bool响应{get;set;}
}
公共类应答器行列表
{
公共IList应答行{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;
}    
公共列表生成答案(字符串c、字符串r)
{
var result=新列表();

对于(var i=0;iRene的答案可能是正确的,但以下是(不必要的复杂)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()
    };
}
AnswerRowList MakeAnswer(字符串answerGridCorrect,字符串answerGridResponses)
{
返回新的应答列表()
{
AnswerRows=answerGridResponses.Zip(
answerGridCorrect==null?
可枚举.重复(null,answerGridResponses.Length):
answerGridCorrect.Select(x=>newnullable(x=='1')),
(r,c)=>新的回答行()
{
正确=c,
响应=r==“1”
})托利斯先生()
};
}

为什么正确为null而不是true/false?假设输入了
correct=“011”
responses=“001”
,则需要输出:
{false,false},{false,true},{true,true}as IEnumerable
?@rene-感谢您的宝贵意见。我应该指出,如果问题尚未标记,则answerGridCorrect将为空。但是answerGridResponses将始终具有一个值,因为如果尚未回答,则假设回答都为假。@Dialogicus-我有AnswerRow和AnswerRowList类这是我创建的。我希望将输出作为AnswerRowList的一个实例。我认为这可能会使它更容易。我现在正在检查此内容。谢谢。当我确定一切正常时,我将更新此帖子。