LINQ如何把一个DataTable的数据更新到数据库

ccshigenvwa 2011-01-20 03:32:32

现在有一个DataTable是我读取导入数据生成的
DataTable的结构
id name grade
1 as 22
2 de 42
3 rr 33

如何实现吧这个DataTable里的grade字段批量更新到数据库
有个问题是必须根据两个条件确定才更新数据
如果用sql表达就是
UPDATE ExamGrade SET grade='22' WHERE id='1' AND name='as'


ExamGradeDataContext examGradeSmallLinq = new ExamGradeDataContext();

var customers = examGradeSmallLinq.ExamGrade .Where(c => c.id==14);
foreach (var customer in customers)
{
//要更新的值
customer.grade= 22;
}
examGradeSmallLinq.SubmitChanges();

//这样写问题是只更新的where条件如何实现动态改变的
...全文
276 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2011-01-20
  • 打赏
  • 举报
回复
你可以打开 dataContent.log查看一下SQL语句
ccshigenvwa 2011-01-20
  • 打赏
  • 举报
回复
采用sql事件监视器发现他首先执行了,查询,然后采用的update
不过我是采用的我上面的方法,但是我看两者方法都一样

监视器查询到的大致内容是

exec sp_executesql select [字段],... from [表名] where [条件]

然后最后执行了
exec sp_executesql update [表名] set [字段]=@值
q107770540 2011-01-20
  • 打赏
  • 举报
回复
从代码上 看是先查询后更新

但是最终生成的SQL语句只有一个update语句
ccshigenvwa 2011-01-20
  • 打赏
  • 举报
回复

ExamGradeDataContext examGradeSmallLinq = new ExamGradeDataContext()
foreach (DataRow dr in gradeDt.Rows)
{
var grades = examGradeSmallLinq.EXAM_GRADE_SMALLL.Where(c => c.id == dr["id"] && c.name == dr["name"] );
foreach (var grade in grades)
{
//要更新的值
grade.grademark = dr["grade"];
}
}
examGradeSmallLinq.SubmitChanges();

//我自己整了个请问下这个和你整的应该是一个意思吧
//还有这个更新过程是不是先查询在更新的,我发觉更新数据行数大了就很慢
//有优化的方案么
q107770540 2011-01-20
  • 打赏
  • 举报
回复

void Main()
{
DataTable dt=new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
dt.Columns.Add("grade");

dt.Rows.Add("1","as","22");
dt.Rows.Add("2","de","42");
dt.Rows.Add("3","rr","33");

var query=from t in dt.AsEnumerable()
select new
{
id=t.Field<string>("id"),
name=t.Field<string>("name"),
grade=t.Field<string>("grade"),
};
ExamGradeDataContext examGradeSmallLinq = new ExamGradeDataContext();
foreach( var m in query)
{
var customers = examGradeSmallLinq.ExamGrade .Where(c => c.id==m.id );
foreach (var customer in customers)
{
//要更新的值
customer.grade=m.grade;
}
examGradeSmallLinq.SubmitChanges();
}
}

8,494

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧