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
Другие вопросы по тегам