使用Linq从包含XElement列表的Dictionary对象(<string,List <XElement >>)中检索XElement

时间:2019-10-01 16:20:43

标签: c# linq dictionary

我有一个Dictionary对象,该对象具有单个键和XElement s列表(超过380,000个)。我必须根据XElement的值从XElement的列表中检索XElement

使用以下代码创建的Dictionary对象:

Dictionary<string, List<XElement>> dictionaryObj = new Dictionary<string, List<XElement>>();
dictionaryObj.Add("KeyName", new List<XElement>());

dictionaryObj["KeyName"].Add(xelementObj); //this line is in a for loop using which I am adding all the XElements to Dictionary object

尝试以下代码来搜索XElement

var input ="9879-9890-223-abc-test";

var matchingKeys = dictionaryObj
                      .Where(kvp => kvp.Value.ToString().Contains(input))
                                     .Select(kvp => kvp.Value);

2 个答案:

答案 0 :(得分:0)

由于字典的值的类型为List<XElement>,因此您需要检查列表中包含的值:

var matchingKeys = dictionaryObj
                   .Where(kvp => kvp.Value.Any(xElement => xElement.Value == input))
                   .Select(kvp => kvp.Value);

我的示例将XElement值(文本内容)与提供的输入进行比较。随时根据需要进行调整。

HTH

答案 1 :(得分:0)

谢谢大家提供您的意见。使用以下代码,我可以检索XElement。

foreach (var item in dictionaryObj)
{
    var matchedXElement = item.Value.Where(x => x.Value.Contains(input));
}