我正在上传一个Excel文件,并在阅读该文件后得到结果。
var data = from c in excel.Worksheet<QuestionMaster>()
select new
{
c.Questionname,
c.Answer1,
c.Answer2,
c.Answer3,
c.Answer4,
c.CorrectAnswer,
};
现在我需要检查上传数据中的任何列不应该 null
因为我的守则是:
问题大师是模型类
QuestionMaster questions = new QuestionMaster();
QuestionMaster temp = new QuestionMaster();
List<QuestionMaster> ques = new List<QuestionMaster>();//
foreach (var item in data)
{
int i = 0;
if (item.Questionname == null || item.Answer1 == null || item.Answer2 == null || item.Answer3 == null || item.Answer4 == null || item.CorrectAnswer == null)
{
if (item.Questionname != null)
temp.Questionname = item.Questionname.Trim();
else
temp.Questionname = "Question Name not Found in Uploaded Excel File";
if (item.Answer1 != null)
temp.Answer1 = item.Answer1.Trim();
else
temp.Answer1 = "Answer 1 Not Found in Uploaded Excel File";
\\Some more Couple of If-Else Conditions
ques.Add(temp);
}
现在的问题是:
假设我有三个不同的行,其中它们是一些空列并且上述条件成立。
当 ques.add(temp)运行第二或第三时间覆盖其他先前添加的列表项但数量的计数列表中添加的项目保持不变 这意味着它将使用 temp 中的当前数据覆盖整个列表。
请告诉我哪里出错了。
提前致谢!!!
答案 0 :(得分:4)
你需要每次在循环中创建一个新对象,目前它在你的循环之外,所以原始对象不断变化
foreach (var item in data)
{
QuestionMaster temp = new QuestionMaster();
}
答案 1 :(得分:1)
if (ques.Contains(temp))
{
//todo replace item
}
else
{
ques.Add(temp);
}
并在循环中重新创建引用
答案 2 :(得分:0)
你的列表包含了QuestionMaster的对象:
List<QuestionMaster> ques = new List<QuestionMaster>();
数据列表具有Anonym类型的对象,尝试在数据中创建QuestionMaster对象而不是任何类型的对象。
答案 3 :(得分:0)
试试这个,它会在最后向现有列表添加一个新项目,
列表作者=新列表
{
新作者 { Name = "Mahesh Chand", Book = "ADO.NET Programming", Price = 49.95 },
新作者 { Name = "Neel Beniwal", Book = "Jump Ball", Price = 19.95 },
new Author { Name = "Chris Love", Book = "Practical PWA", Price = 29.95 }
};
// 向列表中添加更多项目
author.Add(new Author { Name = "Mahesh Chand", Book = "Graphics with GDI+", Price = 49.95 });
author.Add(new Author { Name = "Mahesh Chand", Book = "Mastering C#", Price = 54.95 });
author.Add(new Author { Name = "Mahesh Chand", Book = "Jumpstart Blockchain", Price = 44.95 });
链接
<块引用>https://www.codegrepper.com/code-examples/csharp/add+object+to+generic+list+c%23