我对这些内容不熟悉,但我尝试做的是过滤log4net日志,我已经通过一些特定的信息来填充Application_Error,例如HTTP_USER_AGENT REQUEST TYPE CONTENT_TYPE HTTP_REFERER。
我到目前为止的代码是:
string[] vars = {"IP address", "X-Forwarded-For", "HTTP_USER_AGENT","REQUEST TYPE","CONTENT_TYPE","HTTP_REFERER"};
var param = Request.Params;
var paramEnum = param.GetEnumerator();
while (paramEnum.MoveNext())
{
foreach (var paramVar in vars.Where(paramVar => paramVar == paramEnum.Current.ToString()))
{
Log.Error("\nparam:" + paramVar);
}
}
但它看起来很难看,而且我认为我在简洁的LINQ查询方面并没有走上正轨,尤其是同时使用while和foreach循环。
我说LINQ的新手就像我说的那样,resharper为我创建了LINQ - 如果你觉得我缺少某些领域,请让我知道我需要什么才能进一步理解集合/查询。
这是最有效的做事方式,还是我完全走错了路?
答案 0 :(得分:0)
最好迭代vars
而不是
foreach (var paramVar in vars)
{
var value = Request.Params.Get(paramVar);
if (!string.IsNullOrEmpty(value))
{
Log.Error("\nparam:" + paramVar);
}
}
或使用LINQ
var query = from paramVar in vars
let value = Request.Params.Get(paramVar)
where !string.IsNullOrEmpty(value)
select paramVar;
foreach (var paramVar in query)
{
Log.Error("\nparam:" + paramVar);
}