【发布时间】:2019-05-22 09:53:24
【问题描述】:
我有一个 XML:
<root>
<p>This is a Value</p>
<p>This is a Value</p>
<p>This is a Value</p>
<p>This is a Value</p>
<p>This is a Value</p>
<p>This is a Value</p>
<h3>Another Value</h3>
<h3>Another Value</h3>
<h3>Another Value</h3>
<h3>Another Value</h3>
<h3>This is Another Value</h3>
</root>
我想查找重复值。所以,我这样做了:
var valueDuplicate = xdoc.Descendants().Where(n => n.Name.LocalName == "p" || n.Name.LocalName == "pw" ||
n.Name.LocalName == "plt" || n.Name.LocalName == "psf")
.GroupBy(x => x.Value).Where(g => g.Count() > 1)
.Select(g => new { ElementValue = g.Key, Count = g.Count() }).ToList();
string s = string.Join(Environment.NewLine, valueDuplicate.Select(t => "Value: " + t.ElementValue.Trim() + "- "
+ t.Count + " times."));
这会找到重复值,但不会将 <h3>This is Another Value</h3> 显示为重复值。我也想找到所有包含该值的元素。
【问题讨论】:
-
使用
g.Count() >= 1? -
这会搜索文件中的几乎所有内容。我只想搜索
valueDuplicate中的不同值。 -
你需要 Group By 和包含吗?
-
@AmirNorouzpour - 是的。因此,所有元素
Equals()或Contains()Value 或 Another Value 都会显示出来。我的代码只处理Equals() -
你的输出必须是:Value: Value- 11 次。 ?