Выбор коллекции для моих данных - PullRequest
0 голосов
/ 26 января 2012

Я должен загрузить и использовать мои данные из БД. Данные представлены так:

group_id    term
1           hello
1           world
1           bye
2           foo
2           bar

etc.

Что такое хорошая коллекция C # для загрузки и использования этих данных?

Ответы [ 4 ]

3 голосов
/ 26 января 2012

Похоже, вам нужно Dictionary<int, List<string>>:

var dict = new Dictionary<int, List<string>>();

var dict.Add(1, new List<string> { "hello", "world", "bye" });
var dict.Add(2, new List<string> { "foo", "bar" });
2 голосов
/ 26 января 2012

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

Если ваши данные находятся вdatatable:

var lookup = table.AsEnumerable().ToLookup(row => row.Field<int>("group_id"));

, а затем получить доступ к группам следующим образом:

foreach (var group in lookup)
{
  int groupID = group.Key;
  IEnumerable<DataRow> groupRows = group;
}
1 голос
/ 26 января 2012

Это очень сильно зависит от того, что вам нужно делать с вашими данными.

Если вам просто нужно перечислить свои данные, создайте класс, который содержит данные, и используйте List<Vocable>.

public class Vocable
{
    public int Group { get; set; }
    public string Term { get; set; }
}

List<Vocable> vocables;

Если вам нужно просмотреть все термины, принадлежащие группе, используйте Dictionary<int, List<string>>, используя идентификатор группы в качестве ключа и список терминов в качестве значения.

Если вам нужно найти группу, к которой принадлежит термин, используйте Dictionary<string, int>, используя термин в качестве ключа и идентификатор группы в качестве значения.

0 голосов
/ 26 января 2012

Для загрузки и сохранения данных из и в БД вы можете использовать классы DataSet / DataTable / DataRow.Посмотрите на DataAdapter и т. Д. Зависит от вашего сервера базы данных (MySQL, MsSQL, ...)

, если вы хотите работать с объектами, я предлагаю вам ORM EntityFramework (Microsoft) или SubSonic.http://subsonicproject.com/docs/The_5_Minute_Demo

с ORM вы можете использовать LINQ Queries, как это:

    // Define a query that returns all Department  
    // objects and course objects, ordered by name.
    var departmentQuery = from d in schoolContext.Departments.Include("Courses")
                      orderby d.Name
                      select d;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...