У меня есть простой запрос LINQ, который я хотел бы закоротить на основе первого совпадающего значения в массиве. Я просто хочу вернуться на основе первого значения в xmlDoc, который соответствует первому элементу массива, например, если он соответствует «B», то он выйдет, если он этого не сделает, он попытается сопоставить «C» и т. д.LINQ + короткое замыкание на основе массива
Я мог бы, конечно, иметь зациклился через массив вручную и проверил, было ли значение NULL, и это может быть то, что я должен сделать, но я искал, есть ли более элегантный способ сделать это.
Большое спасибо,
йог
string[] searchTypes = { "B", "C", "D", "A" };
XDocument xDoc = XDocument.Parse(xmlString);
for (int i = 0; i < searchTypes.Length; i++)
commsValue = (from r in xDoc.Descendants("Root")
where r.Element("dCode") != null && r.Element("dCode").Value == searchTypes[i])
select r.Element("Number").Value).FirstOrDefault();
if (commsValue == null)
{
continue;
}
}
Было бы намного проще, чтобы помочь вам, если вы хотите обеспечить короткий, но полный * * Например, с вводом образца и ожидаемого результата. Я не следую тому, что вы пытаетесь сделать в данный момент. –
Если «элегантным» вы подразумеваете запрос Linq, который очевидно для тех, кто читает его, что он делает, тогда нет, нет «элегантного» решения. Придерживайтесь петлей, которую вы можете понять и уметь объяснить. –
Что-то вроде 'searchTypes.Contains (r.Element (" dCode "). Value.ToString())'? –