2016-05-12 9 views
-2

データを保存するためのリストとバイナリファイルを作成しました。今ではリストから削除しようとしていますが、機能していません、なぜですか?リストの削除中のエラー

エラー2:引数1: 'System.Predicate' E 'にXYZ_System.Log' から変換することはできません:\度の割り当て\アプリケーション開発学期1 \ XYZ_System \ XYZ_System \のregisterUserを示す

エラー239 .CS 32 XYZ_System

ERROR1: 'System.Collections.Generic.List.RemoveAll(System.Predicate)' の最良のオーバーロードされたメソッドの試合は、いくつかの無効な引数のEを持っている:\度の割り当て\アプリケーション開発学期1 \ XYZ_System \ XYZ_System \ RegisterUser.cs 239 17 XYZ_System

private void btnDelete_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      Log lg = new Log(); 
      // 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_Address.Text; 

      Stream stream = File.Open("Login.bin", FileMode.Open); 
      BinaryFormatter bformatter = new BinaryFormatter(); 
      list = (List<Log>)bformatter.Deserialize(stream); 
      stream.Close(); 

      list.RemoveAll(lg); 

      // dtvregister.DataSource = list; 

      { 
       MessageBox.Show("Selected details has been deleted !", "Success"); 
       Reset(); 
      } 

     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
+0

質問を根本的に変更するのではなく、有用な回答を無効にするのではなく、*新しい*質問をする必要があります。 – crashmstr

+0

'List list'または' foreach(DataGridViewRow list ...) ' – crashmstr

+0

#crashmstrの名前を変更してください。誤解しないでください。私はここに新しいユーザーです。だからここでは起こりません。ありがとうございました –

答えて

2

list.RemoveAll()アイテムが削除される必要がある場合、アイテムごとに呼び出されるブール値を返す関数(Predicate<T>)が必要です。 これは明確な例です。

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

list.RemoveAll(ValidateItem); 

しかし、ラムダ式で、これは同じん:list.RemoveAll(lg => true);、しかし、あなたがより良い代わりにlist.Clear();を使用したい:あなたの状況でlist.RemoveAll(lg => lg.Name == "John");

が、これは使用することができます。

+0

それでは、ファイルの内容を削除するにはどうすればいいですか?解決方法とコード... –

+0

ファイルを削除するか、空の 'List 'をファイルにシリアル化してください。 –

+0

不成功の回答 –

関連する問題