JsonFx может десериализовать json в динамические объекты.
https://github.com/jsonfx/jsonfx
Сериализовать в / из динамические типы (по умолчанию для .NET 4.0):
blockquote>var reader = new JsonReader(); var writer = new JsonWriter(); string input = @"{ ""foo"": true, ""array"": [ 42, false, ""Hello!"", null ] }"; dynamic output = reader.Read(input); Console.WriteLine(output.array[0]); // 42 string json = writer.Write(output); Console.WriteLine(json); // {"foo":true,"array":[42,false,"Hello!",null]}
Мудрая производительность, они - точно то же (по крайней мере, в SQL Server).
пз: знайте, что IMPLICIT OUTER JOIN
синтаксис удерживается от использования начиная с SQL Server 2005. (IMPLICIT INNER JOIN
синтаксис, как используется в вопросе все еще поддерживается)
Депрекация "Старого Стиля" Синтаксис СОЕДИНЕНИЯ: Только Частичная Вещь
Лично я предпочитаю синтаксис соединения, поскольку делает его более ясным, что к таблицам присоединяются и как к ним присоединяются. Попытка сравнивает большие SQL-запросы, где Вы выбирающий из 8 различных таблиц и у Вас есть большое просачивание где. При помощи синтаксиса соединения Вы выделяете части, где к таблицам присоединяются к части, где Вы фильтруете строки.
Первый ответ, который Вы дали использованию, что известно как синтаксис соединения ANSI, другой, действителен и будет работать в любой реляционной базе данных.
я соглашаюсь с grom, что необходимо использовать синтаксис соединения ANSI. Как они сказали, главная причина для ясности. Вместо того, чтобы иметь где пункт с большим количеством предикатов, некоторые из которых объединяющие таблицы и другие, ограничивающие строки, возвращенные с ANSI, присоединяются к синтаксису, который Вы заставляете его ослепляюще очистить, какие условия используются для присоединения к таблицам и которые используются для ограничения результатов.
@lomaxx: Просто для уточнения я вполне уверен, что оба выше синтаксиса поддерживаются SQL Serv 2005. Синтаксис ниже НЕ поддерживается однако
select a.*, b.*
from table a, table b
where a.id *= b.id;
А именно, внешнее объединение (* =) не поддерживается.
На некоторых базах данных (особенно Oracle) порядок соединений может иметь огромное значение к производительности запросов (если существует больше чем две таблицы). На одном приложении у нас было буквально два различия в порядках величины в некоторых случаях. Используя внутреннее объединение синтаксис дает Вам контроль над этим - при использовании правильного синтаксиса подсказок.
Вы не определили, какую базу данных Вы используете, но вероятность предлагает SQL Server или MySQL, где там это не имеет никакого реального значения.
мудрая Производительность, они - точно то же (по крайней мере, в SQL Server), но знать, что они удерживают от использования этот синтаксис соединения и это не поддерживается sql server2005 из поля.
я думаю, что Вы думаете об устаревшем * = и = * операторы по сравнению с "внешним объединением".
я сейчас протестировал два формата, данные, и они работают правильно над базой данных SQL Server 2008. В моем случае они привели к идентичным планам выполнения, но я не мог уверенно сказать, что это всегда будет верно.
Как Leigh Caldwell заявил, оптимизатор запросов может произвести различные планы запросов на основе того, что функционально похоже на тот же SQL-оператор. Для дополнительных материалов для чтения на этом взгляните на следующие два postings:-
блога Одна регистрация от Команды Оптимизатора Oracle
"Структурированных данных", я надеюсь, что Вы находите это интересным.
Второй синтаксис имеет нежелательную возможность перекрестного объединения: можно добавить таблицы к ОТ части без соответствующего оператора Where. Это считают вредным.