2010-01-07 2 views
0

У меня есть объект LINQ to SQL, и я хочу сгруппировать выбранные данные, а затем передать их в представление. Каков правильный способ сделать это? Я уверен, что мне нужно сгруппировать данные, когда я выберу его, а не группирую его в представлении, так как это приведет к примерно 200 50000 строк, которые мне нужно передать в мой взгляд. Есть ли хорошие примеры этого онлайн, которые кто-либо видел?ASP.NET MVC - Передача сгруппированных данных в вид

Приветствия

MH


----- ----- редактировать

Я хочу немного как: - , например, мой объект данных имеет (среди другие) 2 свойства, которые я хочу извлечь, и group on, ItemDetail.ItemID и ItemDetail.Label - это набор тех, которые я хочу передать в мой взгляд. Моя фабрика данных возвращает IQueryable, которая будет содержать (в живом) около 100 записей для каждой комбинации ItemID/Label, и поэтому я хочу сгруппировать ее по моему мнению, чтобы она отображала только 1 строку в каждой комбинации ItemID/Label. Также, как я могу ввести свой вид - я попытался передать что-то вроде var xxx = ...; return View (xxx); но я не уверен, как сильно напечатать (если можно) представление правильно. Возможно, я могу это сделать и заставить его работать, но я хотел сделать это правильно.


---- редактировать 2 ----

Я только что получил немного дальше от этого. с помощью var IQueryable itemDetList itemDetList = itemDetList.OrderBy (i => i.ItemID) .GroupBy (i => i.ItemID). Выберите (i => i.First()); создает сгруппированный список с 1 строкой в ​​ItemID и сохраняет ввод текста, чтобы я мог передать его в строго типизированное представление - это правильный способ манипулирования данными? Как я могу поместить другой слой группировки, чтобы он группировался по .Label внутри каждой группы .ItemID?

+0

У меня нет абсолютно никаких подсказок о том, чего вы пытаетесь достичь здесь. Можете ли вы прояснить это с помощью некоторого примера? –

+0

Вы просите синтаксис linq для этого? – UpTheCreek

ответ

1

Вы можете абстрагировать модель вы передаете на ваш взгляд из объектов LINQ 2 SQL; проверьте View Model Pattern. Если это означает, что вы обнаруживаете, что потенциально можете написать много кода для сопоставления свойств объектов LINQ 2 SQL с объектами View Model, рассмотрите возможность использования AutoMapper.

1

Ну, а затем сгруппировать данные и передать его на ваш взгляд из вашего контроллера ...

public ViewResult Foo() 
{ 
    var data = this.GetGroupedData(); 
    return this.View(data); 
} 

private IEnumerable<Bar> GetGroupedData() 
{ 
    return from x in GetData() 
      group x by x.Baz into g 
      select new Bar(g.Key); 
} 
+0

Как вы сильно набираете представление для этого? –

+0

В этом примере представление будет строго напечатано как 'IEnumerable '. Обычно, однако, я бы создал конкретный ViewModel, который инкапсулирует список. –

+0

Как вы можете использовать другие свойства, а также сгруппированный ключ с помощью этого метода? –

1

Я бы определил модели презентаций, которые представляют группы в вашем представлении. Заполните Модели презентации с помощью LINQ и передайте их в View.

С помощью моделей презентаций у вас есть строго типизированные данные для отображения на вашем экране.

Смежные вопросы