C# 删除列表时出错

C# 删除列表时出错,c#,list,oop,linked-list,binaryfiles,C#,List,Oop,Linked List,Binaryfiles,我创建了一个列表和一个二进制文件来存储数据。现在我试图从列表中删除,但它不起作用,为什么 错误显示: 错误2:参数1:无法从'XYZ_System.Log'转换为'System.Predicate'E:\Degree Assignment\Application development shourm 1\XYZ_System\XYZ_System\RegisterUser.cs 239 32 XYZ_System 错误1:与“System.Collections.Generic.List.Rem

我创建了一个列表和一个二进制文件来存储数据。现在我试图从列表中删除,但它不起作用,为什么

错误显示:

错误2:参数1:无法从'XYZ_System.Log'转换为'System.Predicate'E:\Degree Assignment\Application development shourm 1\XYZ_System\XYZ_System\RegisterUser.cs 239 32 XYZ_System

错误1:与“System.Collections.Generic.List.RemoveAll(System.Predicate)”匹配的最佳重载方法具有一些无效参数E:\Degree Assignment\Application development Sterm 1\XYZ_System\XYZ_System\RegisterUser.cs 239 17 XYZ_System

private void btnDelete\u单击(对象发送者,事件参数e)
{
尝试
{
Log lg=新日志();
//lg.Username=this.textBox1.Text;
//lg.Password=this.textBox2.Text;
//lg.Name=this.txtname.Text;
//lg.Contact=Convert.ToInt32(this.txtContact_no.Text);
//lg.Email=this.txtEmail\u Address.Text;
Stream=File.Open(“Login.bin”,FileMode.Open);
BinaryFormatter bformatter=新的BinaryFormatter();
list=(list)bformatter.Deserialize(stream);
stream.Close();
列表。移除所有(lg);
//dtvregister.DataSource=列表;
{
MessageBox.Show(“已删除选定的详细信息!”,“成功”);
重置();
}
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
}
}
list.RemoveAll()
需要一个函数(
谓词
),该函数返回一个布尔值,如果要删除该项,则将对每个项调用该布尔值。 这是一个明确的例子:

private bool ValidateItem(Log lg)
{
    if(lg.Name == "John")
        return true;
    else
        return false;
}

list.RemoveAll(ValidateItem);
但是对于lambda表达式,这是相同的:
list.RemoveAll(lg=>lg.Name==“John”)


在您的情况下,可以使用它:
list.RemoveAll(lg=>true)
,但最好使用
list.Clear()

那么如何删除文件内容。。还有什么解决办法吗。。和代码?。谢谢。您可以删除该文件,或者只是将空的
列表序列化到该文件中。未成功回答编辑的部分完全是另一个问题。您不再使用
RemoveAll()
Clear()
了。您应该加载这些文件。添加/修改/删除列表中的项目。准备好后,将修改后的列表保存到磁盘。您应该提出新的问题,而不是从根本上改变您的问题(并使任何有用的答案无效)。只需重命名
列表
foreach(DataGridViewRow列表…
#crashmstr。别误会,我是这里的新用户。。所以在这之后就不会发生了。谢谢,一旦问题有了答案,你就不能从根本上改变它。我把问题往后退了一步,回到了问题被回答的时候。如果你需要,问一个新问题。
private bool ValidateItem(Log lg)
{
    if(lg.Name == "John")
        return true;
    else
        return false;
}

list.RemoveAll(ValidateItem);