美好的一天,我一直在使用Eventlog方法摆弄,随着摆弄,我能够计算出多少entry.replacementstrings [5]又名用户名。
public int countUsers { get; set; }
public string User { 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 counter()
{
var totalUsers = UserList.Sum(user => user.countUsers);
foreach (var user in UserList)
{
Console.WriteLine("There has been {0} users on {1}", user.countUsers, DateTime.Today.ToShortDateString());
}
}
我现在拥有的是什么。我现在想要做的是,在writeline中添加一个正则表达式,这样它就不会计算用户SYSTEM。
我能够做到这一点,但是会打印出每个用户,但我想要了解在该日期有多少人在线的一般/全局概念。
所以我需要知道如何去除每个循环,并获取user.countUsers。
foreach (var user in UserList)
{
Regex User = new Regex(@"SYSTEM");
Match match = User.Match(user.User);
if (!match.Success)
{}
}
我现在不知道如何调用变量,所以我的正则表达式工作。任何人都知道如何解决它,也许可能没有正则表达式?
(旁注:我还需要帮助,因为EventLog是2x,当它应该是合法的那个时。我需要看看我将如何过滤它)
答案 0 :(得分:0)
您不需要使用正则表达式,因为要排除的字符串是文字,您可以使用Linq:
foreach (var user in UserList.Where(u => u.User != "SYSTEM"))
{
Console.WriteLine("There has been {0} users on {1}", user.countUsers, DateTime.Today.ToShortDateString());
}