Ich habe Probleme beim Hinzufügen von Elementen zu einer Liste. Mein Code lautet wie folgt:
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();
}
Und hier sind meine .Models.Fragen:
public class Question
{
public string Text { get; set; }
public List<Answer> Answer { get; set; }
}
Ich möchte, dass es auf den Models.Frage die Fragen und die 4 Antworten auf diese Fragen erhält. Bitte sag mir, wenn ich etwas falsch mache.
Bearbeiten:
Hier ist die Answer
- Klasse:
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; }
}
}
4 Antworten
Du brauchst so etwas wie
Q.Answer.Add(new Answer("Sim, o FC Porto vai ser campeão"));
In diesem Fall muss Answer einen Konstruktor mit einer Zeichenfolge haben, oder Sie machen Answer zu einer Zeichenfolge. Verwenden Sie auch für Zeichenfolgen "" und nicht '' // diese Zeichen
Edit: deine antwortklasse sollte so aussehen:
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;
}
}
Initialisieren Sie Ihre Antwortliste im Konstruktor
public class Question
{
public string Text {get; set; }
public List<Answer> Answers {get; set; }
public Question(){
Answers=new List<Answer>();
}
}
Fügen Sie solche neuen Elemente hinzu
Answers.Add (neue Antwort {Eigenschaft1 = Wert1, Eigenschaft2 = Wert2});
In dieser Zeile:
Q.Answer.Add('Sim, o FC Porto vai ser campeão');
... der Code denkt, Sie versuchen, eine Antwort hinzuzufügen, aber Sie geben ihm tatsächlich ein String-Literal.
Wenn eine Antwort eine Zeichenfolge ist, schlage ich vor, diese Änderung vorzunehmen:
public class Question
{
public string Text { get; set; }
public List<string> Answer { get; set; } //<-- just store strings
}
Wenn eine Antwort tatsächlich komplizierter ist, aber über eine Zeichenfolge initialisiert werden kann, können Sie Folgendes tun:
Q.Answer.Add(new Answer("Sim, o FC Porto vai ser campeão"));
Oder wenn Sie besonders clever sein möchten, können Sie eine implizite Konvertierung einrichten:
public class Answer
{
public string Answers { get; set; }
static public implicit operator Answer(string input)
{
var a = new Answer();
a.Answers = input;
return a;
}
}
Nachdem Sie den impliziten Konvertierungsoperator hinzugefügt haben, können Sie diesen nun wieder verwenden:
Q.Answer.Add("Sim, o FC Porto vai ser campeão");
Gestern habe ich es alleine geschafft, der richtige Weg ist es
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();
Neue Fragen
c#
C # (ausgesprochen "siehe scharf") ist eine statische Typisierungsprogrammiersprache mit mehreren Paradigmen, die von Microsoft entwickelt wurde. C # -Code zielt normalerweise auf die .NET-Tools und -Laufzeiten von Microsoft ab, zu denen unter anderem .NET Framework, .NET Core und Xamarin gehören. Verwenden Sie dieses Tag für Fragen zu Code, der in der formalen Spezifikation von C # oder C # geschrieben ist.