Рейтинг:
2
Christian Graus
Это вернет сгруппированные данные. Как вы его используете, зависит только от вас. Нет никакого правила, которое вы должны использовать LINQ, вы можете писать представления или сохраненные процессы и вызывать их, если хотите
Malikdanish
ниже приведен мой взгляд можете ли вы обновить его в соответствии с моими возвращенными данными
@*@model IEnumerable<cms_monitoring.models.teacher_courses&ГТ;*@
@использование списка страниц;
@использование PagedList.Mvc;
@использование CMS_Monitoring.Прислуга;
@model PagedList.IPagedList<cms_monitoring.models.teacher_courses&ГТ;
@{
Видовой мешок.Title = "Индекс";
Layout = "~/Views/Shared/_Layout2.cshtml";
}
Индекс
setTimeout(функция () {
$('#successMessage').fadeOut('slow');
}, 12000); // <-- время i
@формат HTML.Actionlink панели("создать", "создать", "департаменты", новые { @класс = "БТН БТН-инфо" })
@if (TempData["UpdatedMessage"] != null)
{
@TempData["UpdatedMessage"]
}
@формат HTML.ActionLink("Создать Новый", "Создать")
@использование (в формате HTML.Бигинформ())
{
Поиск по названию отдела: @Html.TextBox("SearchString")
if (TempData["DeleteDepartment"] != null)
{
@TempData["DeleteDepartment"]
}
@foreach (элемент var в модели)
{
}
@Html.DisplayNameFor(model => model[0].курс.Course_Name)
@Html.DisplayNameFor(model => model[0].regs.имя)
@Html.DisplayNameFor(model => model[0].semesterName.Semester_Title)
@Html.DisplayNameFor(model => model[0].is_on_Substitute)
@Html.DisplayNameFor(model => model[0].Активный)
@Html.DisplayNameFor(model => model[0].Course_Assignment_date)
@Html.DisplayNameFor(model => model[0].Date_Modified)
@Html.DisplayNameFor(model => model[0].Added_By)
@Html.DisplayFor(modelItem => item.course.Course_Name)
@Html.DisplayFor(modelItem => item.regs.имя)
@Html.DisplayFor(modelItem => item.semesterName.Semester_Title)
@Html.DisplayFor(modelItem => item.is_on_Substitute)
@Html.DisplayFor(modelItem => item.Активный)
@Html.DisplayFor(modelItem => item.Course_Assignment_date)
@Html.DisplayFor(modelItem => item.Date_Modified)
@Html.DisplayFor(modelItem => item.Added_By)
@формат HTML.Actionlink панели("редактирование", "редактирование", новый { ИД = товар.Идентификатор }) |
@формат HTML.Actionlink панели("подробности", "Подробности", новый { ИД = товар.Идентификатор }) |
@формат HTML.Actionlink панели("удалить", "удалить", новый { ИД = товар.Айди })
}
Страница @(Модель.PageCount < модель.Номер страницы ? 0 : модель.Значение pagenumber) на @модель.PageCount
@формат HTML.PagedListPager(модель, страница => Url.Action("индекс",
новые страницы, порядок сортировки = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
Christian Graus
Это не имеет никакого смысла вообще. Это не поможет. С какой стати вы его используете ASP.NET-что?
Ваша точка зрения, если она у вас есть, - это SQL. Это файл ASPX.
Malikdanish
это представление razor , а не aspx, я просто хочу сказать, что группирую записи в цикле, поэтому оно не находится в форме, которая может быть передана в качестве объекта данных в представление.
Christian Graus
Итак, сгруппируйте записи в SQL, я сказал это для начала
Malikdanish
Я просто хочу спросить, как мне отправить эти данные для просмотра ?
Malikdanish
Привет я изменил свой код представления чтобы сгруппировать там данные
@foreach (элемент var в модели)
{
@foreach(var group in Model.Метод groupBy(модель=&ГТ; модель.регс.имя))
{
@HTML-код.Кодирование(группа.Ключ)
@foreach(var tm в группе)
{
@HTML-код.Кодирование(ТМ.конечно.Course_Name)}
}
@*@Html.DisplayFor(modelItem => item.course.Course_Name)*@
но проверьте , что это неправильно,я не знаю, почему, он показывает пять курсов для ALAM, но в БД есть 4 строки для этого пользователя, во-вторых, группировка все еще повторяет количество строк, которое неправильно
https://imgur.com/33BJUjA
Christian Graus
Опять же, напишите представление SQL, которое группирует ваши данные так, как вы хотите, и вызовите его....
Malikdanish
По sql я сделал это с помощью функции STuff я хочу сделать это с entity framework только с помощью Linq , независимо от того, чтобы сделать это из контроллера или из представления я не хочу вызывать хранимую процедуру я использую Entity framework с помощью linq
Christian Graus
Хорошо, хорошо, если вы не хотите использовать доступные вам инструменты, то я думаю, что играйте с вашим оператором LINQ, пока он не вернет данные, которые вы ожидаете. Если вам нужна помощь, опубликуйте данные, свой код и то, что вы считаете неправильным в результате
Malikdanish
Вот мой код контроллера индекса :
индекс общественного ActionResult(строка сортировки, строки currentFilter, строки SearchString, инт? страница)
{
Видовой мешок.Идентификатор_курса = _ITeacherCoruses.PopulateCourses();
Видовой мешок.Teacher_Id = _ITeacherCoruses.PopulateTeachers();
Видовой мешок.Semester_Id = _ITeacherCoruses.PopulateSemsters();
// ViewBag.Teacher_Id = новый список выбора(db.Registration, "User_Id", "FirstName");
Видовой мешок.CurrentSort = сортировщик;
Видовой мешок.NameSortParm = Строка.IsNullOrEmpty(сортировщик) ? "name_desc" : "";
Видовой мешок.DateSortParm = sortOrder == "дата" ? "date_desc" : "дата";
if (SearchString != null)
{
Страница = 1;
}
еще
{
SearchString = currentFilter;
}
Видовой мешок.CurrentFilter = Строка Поиска;
var dept = from s в БД.Teacher_courses
выберите s;
отдел =отдел.Включают в себя(Т =&ГТ; Т.конечно).Включают в себя(Т =&ГТ; Т.рэгс).Include(t => t.semesterName).OrderBy(t => t.Teacher_Id);
если (!строка.IsNullOrEmpty(Строка Поиска))
{
отдел = отдел.Где(S =&ГТ; с. конечно.Course_Name.Содержит(Строка Поиска));
// || С. FirstMidName.Содержит(строка поиска));
}
переключатель (сортировщик)
{
дело "name_desc":
отдел = отдел.OrderByDescending(ы =&ГТ; с. конечно.Course_Name);
перерыв;
дело "дата":
отдел = отдел.OrderBy(s => s.Course_Assignment_date);
перерыв;
кейс "date_desc":
отдел = отдел.OrderByDescending(s => s.Course_Assignment_date);
перерыв;
по умолчанию:
отдел = отдел.Заказатьпо(ы =&ГТ; с. конечно.Course_Name);
перерыв;
}
int pageSize = 5;
int pageNumber = (Страница ?? 1);
// var teacher_courses = db.Teacher_courses.Включают в себя(Т =&ГТ; Т.конечно).Включают в себя(Т =&ГТ; Т.рэгс).Include(t => t.semesterName).OrderBy(t=>t.Teacher_Id);
отдел = отдел.Включают в себя(Т =&ГТ; Т.конечно).Включают в себя(Т =&ГТ; Т.рэгс).Include(t => t.semesterName).OrderBy(t => t.Teacher_Id);
//return View(groupedUsers);
return View(productsArray.ToPagedList(значение pagenumber, размер страницы));
// вид возврата(teacher_courses.Список());
}
----
Вот мой индексный просмотр :
@*@model IEnumerable<cms_monitoring.models.teacher_courses&ГТ;*@
@использование списка страниц;
@использование PagedList.Mvc;
@использование CMS_Monitoring.Прислуга;
@model PagedList.IPagedList<cms_monitoring.models.teacher_courses&ГТ;
@{
Видовой мешок.Title = "Индекс";
Layout = "~/Views/Shared/_Layout2.cshtml";
}
Индекс
setTimeout(функция () {
$('#successMessage').fadeOut('slow');
}, 12000); // <-- время i
@формат HTML.Actionlink панели("создать", "создать", "департаменты", новые { @класс = "БТН БТН-инфо" })
@if (TempData["UpdatedMessage"] != null)
{
@TempData["UpdatedMessage"]
}
@формат HTML.ActionLink("Создать Новый", "Создать")
@использование (в формате HTML.Бигинформ())
{
Поиск по названию отдела: @Html.TextBox("SearchString")
if (TempData["DeleteDepartment"] != null)
{
@TempData["DeleteDepartment"]
}
@foreach (элемент var в модели)
{
}
@Html.DisplayNameFor(model => model[0].курс.Course_Name)
@Html.DisplayNameFor(model => model[0].regs.имя)
@Html.DisplayNameFor(model => model[0].semesterName.Semester_Title)
@HTML-код.Д
Malikdanish
вот результат, который я получаю
https://imgur.com/5O4J7vc
вот результат, который я хочу получить, я хочу, чтобы все курсы одного учителя были в одном ряду
Christian Graus
https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.groupby?view=netframework-4.8