Я ищу библиотеку/инструмент, чтобы иметь возможность де-сериализации выражений Linq.De/Serialize Basic Linq Выражения с использованием BinarySerializer
Есть ли там библиотека? Уже поддерживается на .Net? Как я могу получить код стартера?
Я ищу библиотеку/инструмент, чтобы иметь возможность де-сериализации выражений Linq.De/Serialize Basic Linq Выражения с использованием BinarySerializer
Есть ли там библиотека? Уже поддерживается на .Net? Как я могу получить код стартера?
Непонятно, что вы хотите сериализовать: результат выражения Linq или выражение, которое вы можете использовать в последовательности.
IEnumerable<MyCollectionItem> MyCollection = ...;
IEnumerable<MyItem> result = MyCollection.LinqQuery(...);
Вы хотите сериализовать результат? или вы хотите сериализовать LinqQuery, так что вы можете использовать его позже на другой коллекции:
IEnumerable<MyItem> otherResult = OtherCollection.DeserializedLinqQuery()
Первый легко: конвертировать результат в List<MyItem>
и сериализации/deserizalize список.
Второй не представляется возможным, в конце концов, LinqQuery не более чем (возможно составного) функции расширения для IEnumerable
static class MyCollectionItemExtensions
{
public static IEnumerable<MyItem> MyLinqQuery(this IEnumerable<MyCollectionItem>(...)
{
...
}
}
MyLinqQuery является функцией, только после того, как вы применили его к После этого вы получаете объект, по которому вы можете перечислить. Нелегко сериализовать функцию.
Однако, если MyLinqQuery является IQueryable, ваш запрос не является функцией, применяемой к элементам MyCollection, а тем, что имеет выражение, которое применяется к элементам MyCollection. Вы можете запросить IQueryable для его выражения и сериализовать его.
Есть несколько ответов о том, как это сделать в статье на StackOverflow: Serializing and deserialize expression tress