LINQ 删除多行 在线等 急

Thirteen07 2010-02-28 10:58:33
我想从Activities这个表中删除所有zhanghao == "zb07nju"的行,但是总是弹出"Sequence contains more than one element ",请问怎么办?

DataClassesDataContext DC = new DataClassesDataContext();
var query = from a in DC.Activities
where a.ZhangHao == "zb07nju"
select a;
DC.Activities.DeleteAllOnSubmit(query);
DC.SubmitChanges();

...全文
214 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xuon 2010-03-02
  • 打赏
  • 举报
回复
翻了一下我以前写的,这样应该没问题了。
        DataClassesDataContext DC = new DataClassesDataContext();
var query = from a in DC.Activities
where a.ZhangHao == "zb09nju"
select a;

if(query.Count()>0)
{
Activities[] actiObjsArr=new Activities[query.Count()];
int i=0;
foreach(Activities item in query)
{
actiObjsArr[i]=item;
++i;
}

for (int n= 0; n < i; ++n)
{
DC.Activities.Remove(actiObjsArr[n]);
DC.SubmitChanges();
}
}
PandaIT 2010-03-01
  • 打赏
  • 举报
回复
 var query =(from a in DC.Activities
where a.ZhangHao == "zb09nju"
select new { a.ZhangHao,a.DateTime,a.Description}).SingleOrDefault();
Thirteen07 2010-03-01
  • 打赏
  • 举报
回复
又试过了另一种方法,还是不行,出类型转换错误“The type 'AnonymousType#1' cannot be used as type parameter 'TSubEntity' in the generic type or method 'System.Data.Linq.Table<TEntity>.DeleteAllOnSubmit<TSubEntity>(System.Collections.Generic.IEnumerable<TSubEntity>)'. There is no implicit reference conversion from 'AnonymousType#1' to 'Activity'.”,


求救

DataClassesDataContext DC = new DataClassesDataContext();
var query = from a in DC.Activities
where a.ZhangHao == "zb09nju"
select new { a.ZhangHao,a.DateTime,a.Description};
DC.Activities.DeleteAllOnSubmit(query);
DC.SubmitChanges();
Thirteen07 2010-03-01
  • 打赏
  • 举报
回复
4楼的方法我早就试过了,还是不行的,我今天知道怎么做了,不过还是谢谢了
Thirteen07 2010-03-01
  • 打赏
  • 举报
回复
4楼的方法我早就试过了,还是不行的,我今天知道怎么做了,不过还是谢谢了
Xuon 2010-03-01
  • 打赏
  • 举报
回复
也可以这样写foreach
foreach(Activities item in query)

思路是先获得单个实体对象,再删除。
这就是楼上的告诉你用SingleOrDefault();的原因。
Xuon 2010-03-01
  • 打赏
  • 举报
回复
DataClassesDataContext DC = new DataClassesDataContext();
var query = from a in DC.Activities
where a.ZhangHao == "zb09nju"
select a;

foreach(var item in query)
{
DC.Activities.DeleteAllOnSubmit(item);
}

if(query.Count()>0)
{
DC.SubmitChanges();
}



这样试试
Thirteen07 2010-03-01
  • 打赏
  • 举报
回复

DataClassesDataContext DC = new DataClassesDataContext();
var query = (from a in DC.Activities
where a.ZhangHao == "zb08nju"
select new {a.ZhangHao,a.Description,a.DateTime}).SingleOrDefault();
DC.Activities.DeleteAllOnSubmit(query);
DC.SubmitChanges();

错误信息为“The type arguments for method 'System.Data.Linq.Table<Activity>.DeleteAllOnSubmit<TSubEntity>(System.Collections.Generic.IEnumerable<TSubEntity>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.”

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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