2016-10-12 16 views
0

おはようございます。私はまだこのブロッカーに反対しているので、私はこの時間をもう一度聞いてみることを試みています。ユーザーログから特定の名前を削除するイベントログ

public string User { get; set; } 
public int countUsers { get; set; } 
public Users(int count, string name) 
{ 
    countUsers = count; 
    User = name; 
} 

public void getCountUsers() 
{ 
    number = 0; // 
    UserList = new ObservableCollection<Users>(); 
    EventLog myNewLog = new EventLog(); 
    myNewLog.Log = "Security"; 
    foreach (EventLogEntry entry in myNewLog.Entries) 
    { 
     if (entry.InstanceId == 4624 && entry.TimeWritten.Date == DateTime.Today) 
     { 
      if (UserList.Count > 0) 
      { 
       bool check = false; 
       foreach (var user in UserList) 
       { 
        if (user.User == entry.ReplacementStrings[5]) 
        { 
         user.countUsers += 1; 
         check = true; 
        } 
       } 
       if (!check) 
       { 
        Users u = new Users(1, entry.ReplacementStrings[5]); 
        UserList.Add(u); 
       } 
      } 
      else 
      { 
       Users u = new Users(1, entry.ReplacementStrings[5]); 
       UserList = new ObservableCollection<Users>(); 
       UserList.Add(u); 
      } 
     } 
    } 
} 

public void amount() 
{ 
    var totalUsers = UserList.Sum(user => user.countUsers); 
    Console.WriteLine("There has been {0} users on {1}", 
    totalUsers, DateTime.Today.ToShortDateString()); 
} 

public void amountPer() 
{ 
    foreach (var user in UserList.Where(u => u.User != "SYSTEM")) 
    { 
     Console.WriteLine("User {0} has been online {1}x 
    times",user.User,user.countUsers); 
    } 

} 

私は現在持っているものです。私が直面しているのは、私がamountPerで行ったのと同じように、量をフィルタリングする方法を理解する必要があるということです。

しかし、私は一般的な番号が必要なので、各ループにaを使いたくありません。 What it outputs currently これにはシステムという名前が含まれていますが、これを除外して実際のユーザーのみをカウントします。どうすればいい?あなたは、単にSYSTEMユーザー

public void amount() 
{ 

    var totalUsers = UserList.Count(user => user.User != "SYSTEM"); 
    Console.WriteLine("There has been {0} users on {1}", 
    totalUsers, DateTime.Today.ToShortDateString()); 
} 

を除外ラムダ式でカウント使用できるだけでなく、システムのユーザーをフィルタするには

答えて

0

しかし、これはあなたのコードがループしないことを意味するものではありません。 Countの拡張子によってループがまだ隠されている

+0

私はずっとこのように長い間これを理解しようとしてきましたが、C#でかなり新しい人にとっては素晴らしいことではありません。あなたが時間があれば、これは私にもう1つの質問に行くでしょう。 上記のコードを他の日にも使用したいと思います。したがって、たとえば:Datetime.Now.AddDays(-1)毎日getcountUser()メソッドを作成する必要がありますか? – 308075

+0

http://pastebin.com/5QrpxpZXは、毎日のユーザー数を表示するために現在使用しているものです。私はすでにこれが多すぎると思っています:P – 308075

+0

チェックする日付を含む新しいプロパティをUsersクラスに追加し、比較操作でこのプロパティを使用するようにコードを変更します。第3のパラメータを受け取るようにコンストラクタを変更し、クラスを使用することを必須とすることさえできます – Steve

関連する問題