Linq to XML скомпилированные запросы
Можно ли изменить этот оператор Linq to XML в скомпилированный запрос?
myxmlnodeList2 = From el In mynode.<attributwert>
Where el.Attribute("AttributID") = sAttributID.ToLower And el.Attribute("Verwendung") = sVerwendung
Select el
Я использовал этот метод: Msdn
Это прекрасно работает, если у меня есть только 1 сингл Where
состояние. Итак, как я могу создать скомпилированный запрос с 2 Where
условия?
2 ответа
Это уже скомпилированный запрос.
Цитата из MSDN:
запросы в LINQ to XML статически компилируются [...]. Эта функция встроена в LINQ to XML, поэтому вам не нужно выполнять дополнительные действия, чтобы воспользоваться ею
Почему вы пытаетесь скомпилировать запрос LINQ to XML помимо того, что делает компилятор? Вы сталкиваетесь с проблемами из-за большой структуры XML? Если это так, рассмотрите возможность реализации реализации XStreamingElement.
Кроме того, вы можете рассмотреть возможность использования.First или.FirstOrDefault вместо Where в своем запросе для его короткого замыкания. В вашем запросе вы должны выполнить итерацию по всему графику. Используя методы First, вы прекращаете оценку, как только доберетесь до первого действительного совпадения. Конечно, если вы действительно хотите коллекцию, тогда.
Третья вещь, которая не имеет ничего общего с производительностью, но полностью стилистическая. Возможно, вы захотите использовать литералы XML для элемента и атрибута, а не смешивать литералы со строковыми параметрами:
Dim myAttribute = sAttributID.ToLower() ' Pull this out to only parse once
myxmlnodeList2 = From el In mynode.<attributwert>
Where el@AttributID = myAttribute
And el@Verwendung = sVerwendung
Select el