2016-09-21 2 views
2

Странный вопрос, в основном я создаю DataTable, используя метод AsEnumerable(), а затем используя запрос LINQ.LINQ, выбирая все элементы массива элементов

Однако я не знаю, сколько строк или столбцов имеет этот DataTable, и мне нужно выбрать все элементы массива элементов, есть ли способ циклического перехода из ItemArray [0] в ItemArray [ItemArray.lenth -1] в запросе LINQ? Это единственный способ найти привязку к сетке MVC, поэтому, если есть лучший способ, я бы с удовольствием узнал!

Ниже приведен вид псевдокода того, что я хотел бы сделать. Любая помощь будет замечательной!

var model = from t in table.AsEnumerable().AsQueryable() 
    select new 
    { 
     for (i = 0 to ItemArray.length) 
     { 
      t.ItemArray[i] 
     } 
    } 
+0

можете ли вы разместить свой класс стола? –

+0

Мне не совсем ясно, что вы пытаетесь сделать здесь. В этом контексте цикл не имеет смысла. Если вы создаете анонимный класс, какая польза от него может быть связана с использованием самих объектов DataRow? – David

+0

Непонятно. В чем, в частности, возникают проблемы с кодом? – mmcrae

ответ

1

Использование SelectMany():

var items = table.AsEnumerable().SelectMany(row=>row.ItemArray); 

Вы также можете сгруппировать элементы по ряду:

var items = from row in dt.AsEnumerable() 
      from item in row.ItemArray 
      group new {item} by row; 
+0

Это действительно не работало для меня, как для таблицы: «t.Columns.Add (« first »); t.Columns.Add ("second"); t.Rows.Add ("1", "2"); t.Rows.Add ("1", "2"); t.Rows.Add ("1", "2"); 'Он просто дал мне таблицу с одним столбцом имени 'column' и строками 1, 2, 1, 2, 1, 2 – Rhizo

+0

Я добавил пример группировки , –

+0

Это сработало отлично. – Rhizo

0

Это звук, если вам нужен SelectMany(), но это будет проще читать как выражение запроса:

var model = from row in table.AsEnumerable() 
      from item in row.ItemArray 
      select item; 
Смежные вопросы