Как пройти через список IEnumerable и, если есть дубликаты, суммировать значение, которое имеет каждый дубликат, и удали ⇐ C#
-
Гость
Как пройти через список IEnumerable и, если есть дубликаты, суммировать значение, которое имеет каждый дубликат, и удали
У меня есть страница использования инвентаря, заполненная списком предметов, которые я использовал в течение определенного периода времени (например, месяца или около того). Существует большое количество элементов, которые являются дубликатами, и я пытаюсь разместить кнопку на странице просмотра (список IEnumerable), которая будет заполнять PDF-файл списком элементов и их итогами. Чего я не могу понять, так это как перебрать список элементов и, если есть дубликаты, получить значения «AmtTaken» и суммировать их, а затем удалить дубликаты, где каждый элемент отображается только один раз, кроме «AmtTaken». итоговые суммы суммируются. У меня сейчас не так много кода, потому что я застрял и пытаюсь найти лучший способ сделать это. Это из таблицы базы данных под названием "InventoryUsage".
Вот моя модель:
публичный частичный класс InventoryUsage { [Ключ] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] общественный int ID {получить; набор; } [Display(Name = «Код товара»)] общественная строка Item_Code {получить; набор; } [Display(Name = "Съемка взята")] общественная строка Amt_Taken {получить; набор; } [Display(Name = «Отправлено?»)] public Nullable Представлено { get; набор; } } Итак, дубликаты, которые я ищу, — это любые дубликаты с одинаковым Item_Code, а затем, если есть дубликат, суммируйте значения Amt_Taken вместе. Я также по-прежнему хочу, чтобы в нем были перечислены все элементы, у которых нет дубликатов. В настоящее время я установил его для всех элементов, где «Отправлено» == false. Итак, в этой модели идентификаторы не будут одинаковыми, если есть дубликат, и это еще одна вещь, которая меня сбивает с толку.
Вот моя страница просмотра:
@model IEnumerable Код товара/RM Сколько взято Поданный? (Да/Нет) @foreach (элемент var в модели) { @Html.DisplayFor(modelItem => item.Item_RM_Code) @Html.DisplayFor(modelItem => item.Amt_Taken) @if (item.Submited_ == true) { Да } еще { Нет } @Html.ActionLink("Создать список", "GetTotals", new {пока не знаю, что сюда поместить}) | @Html.ActionLink("Изменить", "Изменить", новый {id = item.ID }) | @Html.ActionLink("Удалить", "Удалить", новый {id = item.ID}) } А что касается моего контроллера, то здесь у меня пока не так много кода, так как я в полном тупике.
public ActionResult Index() { использование var = от u в db.InventoryUsage выбрать тебя; return View(usage.Where(u => u.Submited_ == false).ToList()); } общедоступный ActionResult GetTotals() { список вар = db.InventoryUsage.Where(x => x.Submited == false).ToList(); //Застрял на этой части// } Будем очень признательны за любые советы и указания!
У меня есть страница использования инвентаря, заполненная списком предметов, которые я использовал в течение определенного периода времени (например, месяца или около того). Существует большое количество элементов, которые являются дубликатами, и я пытаюсь разместить кнопку на странице просмотра (список IEnumerable), которая будет заполнять PDF-файл списком элементов и их итогами. Чего я не могу понять, так это как перебрать список элементов и, если есть дубликаты, получить значения «AmtTaken» и суммировать их, а затем удалить дубликаты, где каждый элемент отображается только один раз, кроме «AmtTaken». итоговые суммы суммируются. У меня сейчас не так много кода, потому что я застрял и пытаюсь найти лучший способ сделать это. Это из таблицы базы данных под названием "InventoryUsage".
Вот моя модель:
публичный частичный класс InventoryUsage { [Ключ] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] общественный int ID {получить; набор; } [Display(Name = «Код товара»)] общественная строка Item_Code {получить; набор; } [Display(Name = "Съемка взята")] общественная строка Amt_Taken {получить; набор; } [Display(Name = «Отправлено?»)] public Nullable Представлено { get; набор; } } Итак, дубликаты, которые я ищу, — это любые дубликаты с одинаковым Item_Code, а затем, если есть дубликат, суммируйте значения Amt_Taken вместе. Я также по-прежнему хочу, чтобы в нем были перечислены все элементы, у которых нет дубликатов. В настоящее время я установил его для всех элементов, где «Отправлено» == false. Итак, в этой модели идентификаторы не будут одинаковыми, если есть дубликат, и это еще одна вещь, которая меня сбивает с толку.
Вот моя страница просмотра:
@model IEnumerable Код товара/RM Сколько взято Поданный? (Да/Нет) @foreach (элемент var в модели) { @Html.DisplayFor(modelItem => item.Item_RM_Code) @Html.DisplayFor(modelItem => item.Amt_Taken) @if (item.Submited_ == true) { Да } еще { Нет } @Html.ActionLink("Создать список", "GetTotals", new {пока не знаю, что сюда поместить}) | @Html.ActionLink("Изменить", "Изменить", новый {id = item.ID }) | @Html.ActionLink("Удалить", "Удалить", новый {id = item.ID}) } А что касается моего контроллера, то здесь у меня пока не так много кода, так как я в полном тупике.
public ActionResult Index() { использование var = от u в db.InventoryUsage выбрать тебя; return View(usage.Where(u => u.Submited_ == false).ToList()); } общедоступный ActionResult GetTotals() { список вар = db.InventoryUsage.Where(x => x.Submited == false).ToList(); //Застрял на этой части// } Будем очень признательны за любые советы и указания!
Мобильная версия