У меня есть некоторый XML-файл, который содержит информацию об оплате, включая сведения о счетах, к которым применяются платежи. Я хотел бы использовать LINQ to XML для сбора только тех платежей, которые применяются, например, к определенным счетам (111 222 333). Если бы это был SQL, я мог бы использовать ключевое слово IN (111,222,333), но я не уверен, как это сделать в LINQ.
<Payment>
<PaymentId>1</PaymentId>
<Total>50</Total>
<Invoice>
<Id>111</Id>
<Amount>20</Amount>
</Invoice>
<Invoice>
<Id>555</Id>
<Amount>30</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>2</PaymentId>
<Total>20</Total>
<Invoice>
<Id>222</Id>
<Amount>20</Amount>
</Invoice>
</Payment>
<Payment>
<PaymentId>3</PaymentId>
<Total>80</Total>
<Invoice>
<Id>888</Id>
<Amount>80</Amount>
</Invoice>
</Payment>
LINQ
var result = xml.Select(x => x.Element("Payment"))
Where(x => x.Element("Id").Value.Contains("111","222","333"))
В этом примере я хотел бы выбрать «PaymentId 1» и «PaymentId 2», поскольку они применяются к счетам, идентификаторы которых соответствуют 111, 222 или 333.