我正在尝试删除username =当前用户名的所有表数据。但是lambda表达式和转换有一些错误。“无法将源类型转换为目标类型。有什么帮助吗?
public JsonResult DeleteChatMessages(int id)
{
string toId = Session["SessionUserName"].ToString();
tblChat tblchats = _obj.tblChat.Where(p => p.ToId == toId);
_obj.tblChat.Remove(tblchats);
_obj.SaveChanges();
return this.Json(true, JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:3)
我假设您只希望从Where
过滤器返回一个对象。
将您的行更改为,因为this。 Where
子句返回IEnumerable<TSource>
。并且您将其分配给非IEnumerable对象。
tblChat tblchats = _obj.tblChat.FirstOrDefault(p => p.ToId == toId)
并且您可能还需要先检查Null
,然后再从tblChat
中删除它。
如果您希望多个对象与过滤器匹配并想要删除所有对象,请使用@tmg方法。
_obj.tblChat.RemoveRange(_obj.tblChat.Where(p => p.ToId == toId).ToList());
答案 1 :(得分:2)
过滤你想要的“聊天”。
var tblchats = _obj.tblChat.Where(p => p.ToId == toId).ToList();
迭代完毕后删除。
foeach(chat in tblchats){
_obj.tblChat.Remove(chat);
}
_obj.SaveChanges();