首页 新闻 搜索 专区 学院

linq 删除记录

0
悬赏园豆:50 [已解决问题] 解决于 2009-08-20 12:32

 

    public void DeleteAlbum(int albumid)
{
var albumlog
= (from p in xt.AlbumInfo
where p.Album_id == albumid
select p).Single();
var picslog
= from q in xt.PictureInfo
where q.AlbumInfo.Album_id == albumid
select q;
foreach (PictureInfo log in picslog)
{
xt.PictureInfo.DeleteOnSubmit(log);
}
xt.AlbumInfo.DeleteOnSubmit(albumlog);
xt.SubmitChanges();
}
我的目的是要删除ID为albumid的相册以及里面的所有照片,但是却出现了
”在更改集中检测到了循环“这个错误。

 

 

 

 

zabery的主页 zabery | 初学一级 | 园豆:0
提问于:2009-08-20 08:32
< >
分享
最佳答案
0

可以使用Linq的DeleteAllOnSubmit语句,不需要循环。

把foreach语句替换为xt.PictureInfo.DeleteAllOnSubmit(picslog);

 

另:第一条语句应该用.SingleOrDefault()查询并对判断有没有查询结果

picslog就可以用 var picslog = xt.PictureInfo.where(q.AlbumInfo == albumlog);

还有,如果我们已经知道变量的类型了为什么还要用匿名类型呢?让编译器再去做这些工作有点浪费吧

收获园豆:50
slokra | 菜鸟二级 |园豆:264 | 2009-08-20 08:47
谢谢你的回答,但是还是没有用,可以帮我再想想吗?
zabery | 园豆:0 (初学一级) | 2009-08-20 09:06
是什么问题?
slokra | 园豆:264 (菜鸟二级) | 2009-08-20 11:42
其他回答(2)
0

同意楼上的

eaglet | 园豆:17119 (专家六级) | 2009-08-20 08:57
0

foreach 只能枚举,不能对集合进行更改,用for(...)

风海迷沙 | 园豆:4453 (老鸟四级) | 2009-08-20 11:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册