【发布时间】:2016-11-25 01:55:53
【问题描述】:
我有一个这样的 XElement 列表:
List<XElement> x = rootx.Elements("table").Elements("row").Where(row => row.Elements("column").ElementAt(1).Value == "1").ToList<XElement>();
然后我得到另一个这样的字符串列表:
List<String> CoList = ds.Tables[0].AsEnumerable().Select(dataRow => dataRow.Field<string>("id")).ToList();
如何创建一个新的 XElement 列表以排除 x 中未在 CoList 中找到的项目?
例如,如果 x 包含 { a, b, c, d} 并且 CoList 包含 { a, c, d},我怎样才能返回一个包含 { a, c, d} 的新 x ?
有没有简单的方法来做到这一点?提示
【问题讨论】:
-
我不明白你的例子。您说您想排除出现在 X 中但不在 CoList 中的元素。因此,如果 X 是
{a, b, c, d}并且 CoList 是{a, c, d}那么您想要排除b,对吗?但是b出现在您的示例结果{a, b, d}中。你的意思是说{a, c, d}? -
是的,布赖恩你是对的! Tks 和我已经对上面的示例进行了更改。我的意思是 {a, c, d} 作为最终输出。
-
嗨,Brian,我看到您发表了与 XElementEqualityComparer 方法相关的评论,但现在该评论已被删除。只是想知道如果列表包含 1000 多个条目,则 XElementEqualityComparer 方法是否有效? Tks
-
我删除了我的答案,因为我意识到它并没有真正回答你提出的问题。我的回答是假设您正在比较两个 XElements 列表。但是现在我重新阅读了这个问题,我发现您确实是在将 XElements 列表与字符串列表进行比较。所以 XElementEqualityComparer 在这里不适用。我想我的问题是,您如何认为 XElement 等于字符串?你只是在 XElement 上做
.ToString吗?还是您取标签名称?还是价值? -
@Trowa 进行有效比较,您可以使用
HashSet<string>而不是List<String>