Сохранение структур данных в C#

Одним из вариантов является подстановка данных по номеру столбца, а затем использовать метод formula из aggregate

aggregate(.~ cbind(Tower_Name = Tower), 
       Software[c(7, match('Tower', names(Software)))], FUN = sum)

Ключ - это подмножество столбцов «Программного обеспечения». Здесь мы уже знаем индекс столбца 'Amount' как 7, объединенный с соответствующим индексом столбца 'Tower', выводит двухкадровый кадр данных. В методе формулы мы можем указать . для всех остальных столбцов. Здесь это будет «Количество» или вариации его имени


С tidyverse это будет проще, поскольку есть summarise_at, которые могут принимать либо имена столбцов, либо индекс

.
library(tidyverse)
Software %>%
     group_by(Tower) %>%
     summarise_at(7, sum) 
11
задан gius 16 December 2008 в 08:29
поделиться

5 ответов

На самом деле C# (язык) ничего не знает о сериализации, но.NET (платформа) обеспечивает много путей... XmlSerializer, BinaryFormatter, DataContractSerializer (.NET 3.0) - или также существует несколько сделанных на заказ платформ сериализации.

То, чтобы использовать, зависит от Ваших требований; BinaryFormatter прост в использовании, но записывает информацию о метаданных блока в файл - создание его непортативный (Вы не могли открыть его в Java, например). XmlSerializer и DataContractSerializer являются, прежде всего, находящимися в xml, делая это довольно портативным, но довольно большой, если Вы не сжимаете его.

Некоторые собственные сериализаторы являются промежуточными между двумя; protobuf-сеть является бинарным форматтером (так очень плотные данные), но который следует портативному стандарту для формата данных (протокол Google буферизует спецификацию). Полезно ли это, зависит от Вашего сценария.

Типичный код (сюда использование XmlSerializer):

        XmlSerializer ser = new XmlSerializer(typeof(Foo));
        // write
        using (var stream = File.Create("foo.xml"))
        {
            ser.Serialize(stream, foo); // your instance
        }
        // read
        using (var stream = File.OpenRead("foo.xml"))
        {
            Foo newFoo = (Foo)ser.Deserialize(stream);
        }
23
ответ дан 3 December 2019 в 02:30
поделиться

Взгляд на Сериализацию и интерфейс ISerializable

Это позволяет Вам сохранять состояние объекта в портативной форме.

6
ответ дан 3 December 2019 в 02:30
поделиться

Необходимо также рассмотреть рассмотрение Linq к SQL (или Платформа Объекта) для отображения O/R и хранить данные в базу данных (SQL CE, SQL Express).

1
ответ дан 3 December 2019 в 02:30
поделиться

Если Вы хотите, чтобы Ваши данные были в формате XML, существует XmlSerializer.

Править: По некоторым причинам я был downvoted для предложения этого, потому что XmlSerializer не может сериализировать Словарь.

Для обхождения этой проблемы, можно всегда настраивать процесс сериализации как это

1
ответ дан 3 December 2019 в 02:30
поделиться

Я создал дополнительный метод, который берет объект и создает строку xml для Вас, все, что необходимо сделать, сохраняют/загружают из файла. XmlSerialisation

1
ответ дан 3 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

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