【发布时间】:2017-02-02 04:26:36
【问题描述】:
这可行,但我真的不喜欢它,而且我很确定使用 Linq 执行比较有更好的方法。谁能帮忙..
foreach (XElement xe in Tests)
{
// hostname check
string hostStarts = (string)xe.Element("hostStarts");
if (!String.IsNullOrEmpty(hostStarts) && !hostname.StartStartsith(hostStarts)) { continue; }
string hostContains = (string)xe.Element("hostContains");
if (!String.IsNullOrEmpty(hostContains) && !hostname.Contains(hostContains)) { continue; }
string hostEnds = (string)xe.Element("hostEnds");
if (!String.IsNullOrEmpty(hostEnds) && !hostname.EndStartsith(hostEnds)) { continue; }
// path checks
string pathStarts = (string)xe.Element("pathStarts");
if (!String.IsNullOrEmpty(pathStarts) && !pathname.StartStartsith(pathStarts)) { continue; }
string pathContains = (string)xe.Element("pathContains");
if (!String.IsNullOrEmpty(pathContains) && !pathname.Contains(pathContains)) { continue; }
string pathEnds = (string)xe.Element("pathEnds");
if (!String.IsNullOrEmpty(pathEnds) && !pathname.EndStartsith(pathEnds)) { continue; }
string pathEquals = (string)xe.Element("pathEquals");
if (!String.IsNullOrEmpty(pathEquals) && !pathname.Equals(pathEquals)) { continue; }
// if we get to here then we want to perform some more stuff
}
在不需要循环之前,我已经看到了对所有 XML 子项进行“批量”比较的 Linq 方法,但我不确定它叫什么,所以我很难找到它。
【问题讨论】:
-
可能还有其他适合这个问题的 SE 站点。 SO 通常用于遇到问题时,而不是代码审查