我在将项目添加到列表时遇到问题,以下是我的代码:
using (var poolDbContext = new PoolContext())
{
Question Q = new Question();
Q.Text = "O triunfo do FC Porto frente ao Benfica arrumou de vez as contas do título?";
Q.Answer.Add ="Sim, o FC Porto vai ser campeão.");
Q.Answer.Add('Sim, o FC Porto vai ser campeão');
Q.Answer.Add("Não, o Benfica ainda tem uma palavra a dizer.");
Q.Answer.Add("Não, o Sporting ainda vai ser campeão.");
Q.Answer.Add("Não ligo a futebol.");
poolDbContext.Questions.Add(Q);
poolDbContext.Answers.Add(Q);
var count = poolDbContext.SaveChanges();
}
这是我的.Models.Questions:
public class Question
{
public string Text { get; set; }
public List<Answer> Answer { get; set; }
}
我希望它能在Models.Question上收到问题以及这些问题的4个答案。 如果我做错了,请告诉我。
修改
这是Answer
- 类:
using System;
using System.Collections.Generic;
using System.Text;
namespace PoolManager.Models
{
public class Answer
{
public string Questions { get; set; }
public string Answers { get; set; }
public string Results { get; set; }
}
}
答案 0 :(得分:0)
你需要像
这样的东西 Q.Answer.Add(new Answer("Sim, o FC Porto vai ser campeão"));
在这种情况下,Answer需要有一个带字符串的构造函数,或者你将Answer作为一个字符串。也用于字符串使用&#34; &#34;而不是&#39; &#39; //这些是用于字符
编辑: 你的答案课应该是这样的:
public class Answer
{
public string Questions { get; set; }
public string Answers { get; set; }
public string Results { get; set; }
public Answer(string text)
{
Answers = text;
}
public Answer(string question, string answer, string results)
{
Questions = question;
Answers = answer;
Results = results;
}
}
答案 1 :(得分:0)
在构造函数
中初始化答案列表public class Question
{
public string Text {get; set; }
public List<Answer> Answers {get; set; }
public Question(){
Answers=new List<Answer>();
}
}
添加像这样的新项目
Answers.Add(new Answer {property1 = value1,property2 = value2});
答案 2 :(得分:0)
在这一行:
Q.Answer.Add('Sim, o FC Porto vai ser campeão');
...代码认为您正在尝试添加答案,但实际上您正在给它一个字符串文字。
如果答案是字符串,我建议进行此更改:
public class Question
{
public string Text { get; set; }
public List<string> Answer { get; set; } //<-- just store strings
}
如果答案实际上更复杂,但可以从字符串初始化,则可以执行以下操作:
Q.Answer.Add(new Answer("Sim, o FC Porto vai ser campeão"));
或者,如果您想要特别聪明,可以设置隐式转换:
public class Answer
{
public string Answers { get; set; }
static public implicit operator Answer(string input)
{
var a = new Answer();
a.Answers = input;
return a;
}
}
添加隐式转换运算符后,您现在可以再次使用它:
Q.Answer.Add("Sim, o FC Porto vai ser campeão");
答案 3 :(得分:0)
昨天我设法独自完成,正确的做法是
using (var poolDbContext = new PoolContext())
{
if (poolDbContext.Questions.Count() == 0)
{
Question Q = new Question();
Q.Text = "O triunfo do FC Porto frente ao Benfica arrumou de vez as contas do título?";
Q.Answers.Add(new Answer { Answers = "Sim, o FC Porto vai ser campeão." });
Q.Answers.Add(new Answer { Answers = "Não, o Benfica ainda tem uma palavra a dizer." });
Q.Answers.Add(new Answer { Answers = "Não, o Sporting ainda vai ser campeão." });
Q.Answers.Add(new Answer { Answers = "Não ligo a futebol." });
poolDbContext.Questions.Add(Q);
var count = poolDbContext.SaveChanges();
}
}
return View();