私はしばらくグーグルで検索し、問題に対してさまざまなタイプの組み合わせを試しました。
Gridview に Anonymous 型の結果を入力したいと考えています。すべての変数に実際の値があるため、「ループ」の最初の実行はうまくいきます。
しかし、行番号 2 のスローを埋める 2 回目:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
これは、おそらく匿名オブジェクトをnullに割り当て、グリッドビューがそれを処理できないためです。私はいくつかの解決策を見つけようとしましたが、まだ何もうまくいきません。
LinQ を正しく理解するための秘密の通路はありますか?
これは今私のコードです:
var filteredlist = from info in list // List from external
select new
{
Question = info.QuestionText ?? "Test",
CorrectAnswer = info.CorrectAnswer.OptionText ?? "Test",
WrongAnswer1 = info.WrongAnswer1.OptionText ?? "Test",
WrongAnswer2 = info.WrongAnswer2.OptionText ?? "Test", //Throws Error
WrongAnswer3 = info.WrongAnswer3.OptionText ?? "Test" //Throws Error
};
GridView1.DataSource = filteredlist;
GridView1.DataBind();
これは、それを機能させるための私の試みです。
var filteredlist = from info in list // list from external
select new
{
Question = info.QuestionText == null ? "Test" : info.QuestionText,
CorrectAnswer = info.CorrectAnswer.OptionText == null ? "Test" : info.CorrectAnswer.OptionText,
WrongAnswer1 = info.WrongAnswer1.OptionText == null ? "Test" : info.WrongAnswer1.OptionText,
WrongAnswer2 = info.WrongAnswer2.OptionText == null ? "Test" : info.WrongAnswer2.OptionText, //Throws Error
WrongAnswer3 = info.WrongAnswer3.OptionText == null ? "Test" : info.WrongAnswer3.OptionText, //Throws Error
};
GridView1.DataSource = filteredlist;
GridView1.DataBind();
2 回目の試行
var filteredlist = from info in list // list from external
select new
{
Question = info.QuestionText != null ? "Test" : info.QuestionText,
CorrectAnswer = info.CorrectAnswer.OptionText != null ? "Test" : info.CorrectAnswer.OptionText,
WrongAnswer1 = info.WrongAnswer1.OptionText != null ? "Test" : info.WrongAnswer1.OptionText,
WrongAnswer2 = info.WrongAnswer2.OptionText != null ? "Test" : info.WrongAnswer2.OptionText, //Throws Error
WrongAnswer3 = info.WrongAnswer3.OptionText != null ? "Test" : info.WrongAnswer3.OptionText, //Throws Error
};
GridView1.DataSource = filteredlist;
GridView1.DataBind();