我需要将数据从Excel附加到数据库,因此我需要检查Excel列中的验证,如果dr[0]
是否为数字,并且Excel中的任何行在数据库中重复跳过它并仅添加新的记录:
MaamoonKhalidIssueEntities db = new MaamoonKhalidIssueEntities();
foreach (DataTable table in result.Tables)
{
foreach (DataRow dr in table.Rows)
{
Person addtable = new Person()
{
nparent =Convert.ToInt32(dr[0]),
ncode = Convert.ToString(dr[1]),
nname = Convert.ToString(dr[2])
};
db.People.Add(addtable);
}
我无法检查dr[0]
因为它的对象
答案 0 :(得分:0)
您可以编写ValidateNewPerson-Method。此方法尝试从数据库中获取具有相同ncode的人员。如果成功,则记录无效,否则,可以添加此人:
public bool ValidateNewPerson(Person newPerson, MaamoonKhalidIssueEntities db)
{
var dbPerson = db.People.Where(e => e.ncode == newPerson.ncode).FirstOrDefault();
if (dbPerson == null)
return true;
else
return false;
}
现在你可以在你的foreach中调用这个方法:
foreach (DataRow dr in table.Rows)
{
Person addtable = new Person()
{
nparent =Convert.ToInt32(dr[0]),
ncode = Convert.ToString(dr[1]),
nname = Convert.ToString(dr[2])
};
if (ValidateNewPerson(addtable, db))
db.People.Add(addtable);
}
如果您想使用Linq-Method,您可以使用Any来请求您的数据库中的任何记录是否符合您的条件:
foreach (DataRow dr in table.Rows)
{
Person addtable = new Person()
{
nparent =Convert.ToInt32(dr[0]),
ncode = Convert.ToString(dr[1]),
nname = Convert.ToString(dr[2])
};
if (!db.People.Any(p => p.ncode == addtable.ncode))
db.People.Add(addtable);
}