C#: что еще делает Вы используете помимо DataSet

Поскольку у вас нет столбцов с именем 'A','C', это то, что вы пытаетесь сделать, что поднимет KeyError, поэтому вам нужно использовать итеративный для подвыборки из df.

Итак,

df[df['A'] < 3]['A','C']

поднимает

KeyError: ('A', 'C')

to

In [261]:
df[df['A'] < 3][['A','C']]

Out[261]:
   A  C
0  0  1
1  2  5

Это ничем не отличается от попыток:

df['A','C']

, поэтому вам нужны двойные квадратные скобки:

df[['A','C']]

Обратите внимание, что современные путь должен использовать .ix:

In [264]:
df.ix[df['A'] < 3,['A','C']]

Out[264]:
   A  C
0  0  1
1  2  5

. Так что вы работаете на представлении, а не в потенциальной копии

20
задан Community 9 September 2008 в 22:13
поделиться

12 ответов

Так как.NET 3.5 вышла, я исключительно использовал LINQ. Это действительно настолько хорошо; я не вижу оснований для использования любых из тех старых костылей больше.

Столь же большой, как LINQ, тем не менее, я думаю, что любая система ORM позволила бы Вам покончить с этим dreck.

20
ответ дан 29 November 2019 в 23:53
поделиться

Я НИКОГДА не использую наборы данных. Они - большие тяжелые объекты, только применимые (поскольку кто-то указал здесь) для "демонстрационного программного обеспечения". Существует партия больших альтернатив, показанных здесь.

-1
ответ дан 29 November 2019 в 23:53
поделиться

Я просто создаю свои бизнес-объекты с нуля и почти никогда не использую DataTable и особенно не DataSet больше, кроме первоначально заполнить бизнес-объекты. Преимуществами для создания Вашего собственного является тестируемость, безопасность типов и intellisense, расширяемость (попытайтесь добавить к DataSet), и удобочитаемость (если Вы не любите читать, вещам нравится, Преобразовывают. ToDecimal (dt. Строки [я] ["вздор"].ToString ())).

, Если бы я был более умным, я также использовал бы ORM и третью сторону платформа DI, но просто еще не чувствовал потребность в тех. Я делаю много меньших проектов размера или дополнений к большим проектам.

0
ответ дан 29 November 2019 в 23:53
поделиться

Я использую их экстенсивно, но я не использую ни одной из "усовершенствованных" функций, которые действительно продвигала Microsoft, когда платформа сначала вышла. Я в основном просто использую их в качестве Списков Хеш-таблиц, которые я нахожу совершенно полезными.

я не видел хорошие результаты, когда люди попытались сделать комплекс введенным DataSets, или попробованный для фактической установки отношений внешнего ключа между таблицами с DataSets.

, Конечно, я - один из странных, который на самом деле предпочитает DataRow экземпляру объекта объекта.

1
ответ дан 29 November 2019 в 23:53
поделиться

Пред linq я использовал DataReader для заполнения Списка моих собственных объектов области, но отправить linq я использовал L2S для заполнения объектов L2S или L2S для заполнения объектов области.

, После того как я заставляю немного больше времени заниматься расследованиями, я подозреваю, что объекты Платформы Объекта будут моим новым любимым решением!

1
ответ дан 29 November 2019 в 23:53
поделиться

Выбор современного, стабильного, и активно поддерживаемого инструмента ORM должен быть, вероятно, единственным самым большим повышением производительности примерно, любой проект умеренного размера и сложности может добраться. Если Вы приходите к заключению, что абсолютно, абсолютно, абсолютно необходимо записать собственный DAL и ORM, Вы, вероятно, делаете его неправильно (или Вы используете самую неясную базу данных в мире).

при выполнении необработанных наборов данных и строк и что не, проведите день для попытки ORM, и Вы будете поражены тем, сколько еще продуктивный можно быть w/o вся тяжелая работа отображающихся столбцов к полям или все время заполняющимся объектам команды Sql и всем другим переход обруча, который все мы однажды прошли.

я люблю меня некоторые Дозвуковые, хотя для проектов меньшего масштаба наряду с демонстрациями/прототипами, я нахожу Linq к Sql довольно чертовски полезным также. Я ненавижу EF со страстью все же. :P

1
ответ дан 29 November 2019 в 23:53
поделиться

DataSets являются большими для демонстраций.

я не знал бы, что сделать с тем, если Вы заставили меня использовать его.

я использую ObservableCollection

С другой стороны, я нахожусь в клиентском пространстве приложения, WPF и Silverlight. Так передача набора данных или таблицы данных через сервис... груба.

DataReaders быстры, так как они вперед только поток набора результатов.

2
ответ дан 29 November 2019 в 23:53
поделиться

Я использовал Объекты Передачи данных шаблон (первоначально от мира Java, я верю), с SqDataReader для заполнения наборов DTOs от слоя данных для использования в других слоях приложения. DTOs самостоятельно являются очень легкими и простыми классами, состоявшими из свойств с, получает/устанавливает. Они могут легко сериализироваться/десериализовываться и использоваться для привязки данных, делая их вполне прилично подходящий для большинства моих нужд развития.

3
ответ дан 29 November 2019 в 23:53
поделиться

Я - огромный поклонник SubSonic. Правильно написанный ПАКЕТ/КОМАНДНЫЙ ФАЙЛ может генерировать всю объектную модель для Вашей базы данных в минутах; можно скомпилировать его в его собственный DLL и использовать его по мере необходимости. Замечательная модель, замечательный инструмент. Сайт заставляет его походить на соглашение ASP.NET, но вообще говоря, это работает замечательно примерно где угодно, если Вы не пытаетесь использовать его платформу UI (который я умеренно разочарован), или его инструменты автоматической генерации прикладного уровня.

Для записи, вот версия команды, которую я использую для работы с нею (так, чтобы Вы не боролись с нею слишком трудно первоначально):

sonic.exe generate /server [servername] /db [dbname] /out [outputPathForCSfiles] /generatedNamespace [myNamespace] /useSPs true /removeUnderscores true

, Который делает это каждый раз... Затем создайте DLL от того каталога - это - часть проекта NAnt, исчерпанного CruiseControl.NET - и далеко мы идем. Я использую это в WinForms, ASP.NET, даже некоторой командной строке utils. Это генерирует наименьшее количество зависимостей и самой большой "мобильности" (между связанными проектами, EG).

Вышеупомянутому Примечания

теперь хорошо более чем год. В то время как я все еще держу большую нежность в своей основе для SubSonic, я шел дальше LINQ-SQL, когда у меня есть роскошь работы в.NET 3.5. В.NET 2.0, я все еще использую SubSonic. Таким образом, мой новый официальный совет зависим от версии платформ. В случае.NET 3 +, пойдите с принятым ответом. В случае.NET 2.0, пойдите с SubSonic.

3
ответ дан 29 November 2019 в 23:53
поделиться

Мы переехали от наборов данных и создали наши собственные объекты ORM свободно на основе CSLA. Можно было сделать то же задание или с DataSet или с LINQ или ORM, но многократное использование его (мы нашли), намного легче. 'Меньше кода делает более счастливыми'.

4
ответ дан 29 November 2019 в 23:53
поделиться

Я был сыт по горло DataSets в.Net 1.1, по крайней мере, они оптимизировали его так, чтобы он больше не замедлялся как экспоненциально для больших наборов.

Это всегда была довольно чрезмерно увеличенная в размерах модель - я не видел много приложений, которые используют большинство ее функций.

SqlDataReader был хорош, но я раньше переносил его в IEnumerable<T>, где T был некоторым введенным представлением моей строки данных.

Linq является намного лучшей заменой, по-моему.

3
ответ дан 29 November 2019 в 23:53
поделиться

Я использовал типизированные DataSets для нескольких проектов. Они хорошо моделируют базу данных, устанавливают ограничения на стороне клиента и в целом представляют собой надежную технологию доступа к данным, особенно с изменениями в .NET 2.0 с TableAdapters.

Типизированные наборы данных получают плохую репутацию от людей, которые любят использовать эмоциональные элементы. слова вроде «раздутые», чтобы их описать. Допускаю, что мне больше нравится использовать хороший преобразователь O / R, чем DataSets; просто «кажется» лучше использовать объекты и коллекции вместо типизированных таблиц данных, строк данных и т. д. Но я обнаружил, что если по какой-либо причине вы не можете или не хотите использовать преобразователь O / R, введите DataSets - хороший твердый выбор, который достаточно прост в использовании и даст вам 90% преимуществ преобразователя O / R.

EDIT:

Некоторые здесь предполагают, что DataReaders являются "

Используйте лучший инструмент для работы. Не принимайте решение на основе эмоциональных слов, таких как «грубый» или «раздутый», которые не имеют фактической основы.

Используйте лучший инструмент для работы. Не принимайте решение на основе эмоциональных слов, таких как «грубый» или «раздутый», которые не имеют фактической основы.

1
ответ дан 29 November 2019 в 23:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: