【问题标题】:iterate an object and create a new object with group by C# mvc通过 C# mvc 迭代一个对象并使用 group 创建一个新对象
【发布时间】:2019-07-17 21:39:57
【问题描述】:

如何循环一个对象并在 C# 中创建一个新对象 我有一个视图模型,例如:

pViewModel  {
public itemFullName {get;set;}
public Item Item{get;set;}
}
public Item{
public int itemId{get;set;}
}

我想在找到匹配的全名但不同的 id 后创建一个新对象 所以我的新对象将在其中包含 itemFullName、item.itemid(上一个列表中所有项目的管道分隔值)的列表。

任何帮助都会很棒。 谢谢

【问题讨论】:

  • 我很难理解您的要求。您能否提供一些示例输入和预期输出?也许使用 JSON 表示法之类的?
  • 我有一个列表,其中有 237 个项目,其中 itemfullname 重复,但 item.itemid 集不同。我想获得一个包含重复 itemfullname 和 item.itemid (重复)的新列表

标签: c# linq asp.net-mvc-viewmodel


【解决方案1】:

听起来您想按 itemFullName 对模型列表进行分组。以下是创建匿名类型对象的方法。

var itemsAndIds = list
    .GroupBy(m => m.itemFullName, m => m.Item.itemId)
    .Select(g => new {ItemFullName = g.Key, ItemIds = string.Join("|", g)})

【讨论】:

  • 这很棒。但如果视图模型中有其他属性,比如“itemAddress”,itemCountry。有没有办法将这些附加到现有的 itemsandids 对象?
  • 是的,有办法。例如,您可以为这些匿名对象添加新属性。您可能希望将 GroupBy 的第二个参数更改为 m => m.Item,然后选择这些差异部分作为 Select 的一部分(例如 g.Select(i => i.itemAddress)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-08
相关资源
最近更新 更多