【发布时间】:2018-03-20 12:50:41
【问题描述】:
所以。我有一个列表属性,它对具有相同名称的值进行分组;
List<IGrouping<string, MyItemDTO>> MyList { get; set; }
它最初是通过 IQueryable<> 从数据库中填充的。
但是假设我想使用代码向此列表中添加一个新项目,我该怎么做呢?由于 IGrouping 是一个接口,所以我不能像这样完全更新它;
IGrouping<string, MyItemDTO> newGroup = new IGrouping<string, MyItemDTO>();
MyList.Add(newGroup);
这行不通。我想知道,'是什么?我如何在那里获得新物品?
非常感谢。
编辑:
一点看法:
想象一下有两个或更多城市。这些城市有几条街道名称相匹配。 IGrouping<,> 确保街道名称在列表中只出现一次。因此,数据绑定的Combobox 不会重复任何值(通常是因为最终用户不知道这条街道属于哪个城市)。
我的视图有两个Comboboxes。一个用于街道,另一个用于城市。如果选择了一条街道,则视图模型将选择相应的城市,除非街道组中包含多条街道。此时,系统将提示用户手动选择街道所在的城市。
我认为IGrouping<,> 适合此目的,因为它是使用 GroupBy() 扩展方法时的默认返回类型。不过仍然愿意接受建议。
【问题讨论】:
-
你没有。
IGrouping是GroupBy返回的东西。它显然不是设计为可在提供程序之外构建的。如果你坚持你当然可以实现自己的IGrouping——但更明智的方法是将IGroupings 转换为其他东西,比如Dictionary<string, List<..>>。 -
您或许应该解释一下您的原始问题,以及为什么您认为
IGrouping<,>可以解决它。 -
你可以使用泛型创建一个新的IGrouping实例去this solution
-
@PanagiotisKanavos 我已经更新了我的描述,提供了一些背景故事来说明是什么导致我这样做。也许你可以再看看?
标签: c# .net wpf list collections