Как я могу использовать linq для dataSet для преобразования dataTable в массив? - PullRequest
1 голос
/ 16 июня 2011

У меня есть следующая схема таблицы sql:

procudtId   productPrice  Color
==================================
1           3 $           Blue
1           3 $           Red
1           3 $           Green
2           5 $           Blue
2           5 $           Red

Используя c # код, я получил это в dataSet. Как я могу использовать linq для dataSet для создания массива, который выглядит как

[ price:"3$", ColorList:<"Blue","Red","Green"> ;
  price:"5$", ColorList:<"Blue","Red">]

Спасибо

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Я думаю, что это будет работать:

    //dt is the DataTable you're working with.
    var groups = from row in dt.AsEnumerable()
                 group row["Color"] by row["productPrice"] into prices
                 select prices;

    var query = from g in groups
                select new
                {
                    price = g.Key,
                    ColorList = g.ToList()
                };

Если этого не произойдет, дайте мне знать, и я отредактирую.

0 голосов
/ 16 июня 2011

Думаю, я сделаю это в два этапа:

1. create the color lists
    var dataRows = from row in ds.Tables[0].AsEnumerable()
                   //group row by row.Field<Int32>("TierId")
                   where row.Field<Int32>("ProductId") == 1
                   select
                       row.Field<String>("Color");

    List<String> list =  dataRows.ToList();

2. acquire the product price
3. combine them both to array
...