问题标签 [icollection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1738 浏览

c# - C# IDictionary.Keys 和 IDictionary.Values:最佳实现是什么?

我有一个充当字典的 C# 类,所以我现在正在支持 IDictionary。

一切都很好,除了属性键和值:

我在内部没有键或值的集合,所以我想知道如何将这些作为 ICollection 提供。

我的第一次尝试是像这样使用“收益回报”的魔力:

但当然这不起作用,因为返回的类型不是 IEnumerator 而是 ICollection ...

这太糟糕了,因为这将是最简单的解决方案!

我的第二次尝试是将我的值复制到一个新创建的数组中并返回该数组。

这会起作用,因为 Array 支持 ICollection。
但问题是 ICollection 具有添加和删除条目的方法。如果调用者调用这些方法,则只会修改副本而不是字典...

我选择的最终解决方案是让我的字典支持 IDictionary 以及 ICollection 和 ICollection,这样我就可以从属性 Keys 和 Values 中返回这些集合......

所以现在属性 Keys 和 Values 的 get 访问器只返回“this”,即:字典。

这可能是最理想的解决方案,但我发现无论何时要实现 IDictionary,都必须实现两个额外的接口很麻烦。

你有什么别的想法吗?

我在想也许将副本作为数组返回毕竟不是一个坏主意。无论如何,IDictionary 中已经有一个 Add 和 Remove 方法,使用起来更有意义。

也许返回包装数组的 ReadOnlyCollection 会更好,因为任何修改返回的集合的尝试都会失败?

0 投票
1 回答
2373 浏览

asp.net-mvc - 无法初始化 ASP MVC3 ViewModel 的列表属性

下面是我们在我们正在构建的 ASP MVC3 站点中使用的两个 ViewModel。在下面的代码中,我试图填充名为的变量TradingPartners IListAgentIdDetail属性。AgentWithTrainingbigAgent

为了更好地说明:

bigAgent是一个AgentWithTraining

AgentWithTraining有一个AgentIdDetail ICollection列表对象作为属性 AgentIdDetail有一个IList名为的列表对象TradingPartner

问题是以下代码行:

这给了我错误:

Cannot implicitly convert type 'Monet.ViewModel.AgentIdDetail' to 'System.Collections.Generic.ICollection<Monet.ViewModel.AgentIdDetail>'. An explicit conversion exists (are you missing a cast?)

有人可以解释我需要如何进行初始化bigAgent.AgentIdDetails吗?以下是我正在使用的完整代码部分,以防万一。

0 投票
1 回答
1171 浏览

f# - F# 返回 ICollection

我正在使用用 C# 创建的库。我一直致力于将一些代码移植到 F#,但必须使用 C# 库中的许多基础类型。

一段代码需要计算一个值列表并将其分配给类中的公共字段/属性。该字段是一个包含两个 ICollection 的 C# 类。

我的 F# 代码工作正常,需要返回一个 F# Seq/List。

我尝试了以下每个都会产生错误的代码片段。

  • F# 成员的返回类型是一个名为 recoveryList 的类型,类型为 Recoveries list
  • 类中的公共字段,该类本身包含两个 ICollection 对象

    /li>

这给出了错误 Expected to have type ICollection but has type Recoveries list

给出错误预期类型 ICollection 但为 ResizeArray

与上述相同的错误 - 预期 ICollection 但类型为 List

有任何想法吗?从 C# 的角度来看,这些操作似乎是有效的,并且 List/ResizeArray 实现了 ICollection 所以......我很困惑如何分配值。

我可以更改底层 C# 库的类型,但这可能有其他含义。

谢谢

0 投票
2 回答
1379 浏览

entity-framework - MVC4 EF DB First - How to access a models foreign key (ICollection)

I created a MSSQL database with tables containing foreign keys. I then created a new MVC 4 web application. I used Entity Framework to generate my controllers/models/views. In the models, tables that were linked using foreign keys appear as ICollections. For example:

My question is how am I able to access the data stored in those ICollections in a view? Test.Questions[x] <-- gives errors.

0 投票
2 回答
1059 浏览

asp.net-mvc-4 - 一次动态地将单个条目添加到 ICollection (MVC4 EF)

我很难解决这个问题:有没有办法将单个条目添加到 ICollection?一次一个,为每个添加的条目将数据持久化到数据库中?

这是我的具体情况:

我有一个测试模型:

测试包含一组问题。问题模型:

我的目标是让用户能够创建一个带有名称和描述的测试,然后动态地将问题添加到该测试中,直到他们满意为止。到目前为止,创建测试很容易,但是用问题加载测试对我来说是一个挑战。我曾设想过一种表单,可以将 Question 和 Test.Id 提交给控制器操作,控制器操作会将数据保存到数据库中。但我不明白如何将问题动态添加到测试的 ICollection 中。

有没有办法将单个条目添加到 ICollection?一次一个?

我做过的许多尝试之一

非常感谢您的帮助!

回应levelnis:我试过这个没有运气

它不会向数据库添加任何问题。有任何想法吗?

编辑:我尝试过的唯一将问题输入数据库的代码是:

..但这会使数据库中的另一个测试具有相同的名称/描述,但新的 id 已增加。

0 投票
1 回答
704 浏览

entity-framework - 从虚拟集合中删除对象或移动到实体框架代码中的另一个对象

我有一个具有自引用父子关系的对象:

我正在尝试使用编辑功能,以便如果父 ID 发生更改,则该对象会从旧父级的子级中正确删除并添加到新的(或正确设置为 null)

为了使代码正确更改父 ID,我尝试了多种组合,但我无法在这里破解正确的操作。

问题是数据表有两个与 ParentID 相关的字段 - 第一个ParentID正确更改,第二个Parent_ContentID未正确更改。第二个用于循环.Contents来自父级的属性。

我错过了什么?如何从父对象的“相关对象”集合中删除当前对象?

0 投票
0 回答
66 浏览

asp.net-mvc-3 - 无法更新具有多个 ICollection 属性 MVC3 的模型实体

这是我的问题,

我在 Componet.cs 中有下一个模型(我的真实组件还有十个 Icollections,但我认为问题应该与 1 个 ICollection 或 10 个相同,我没有将它们写下来)。

在我的应用程序中,我可以编辑该组件以添加、删除或编辑其任何属性。我可以根据国家或语言添加几个品牌所有者或描述。当我选择其中一个组件进行编辑时,我将组件加载到 Session 变量中,并对该 Session 变量执行所有操作。

当我完成编辑项目时,我有两个按钮,接受和取消。如果我取消在 Session 变量中所做的所有更改,则将被解除。

当我按下“接受”按钮更新所选项目时,问题就来了。我找不到路

这是我的接受方法:

我已尝试附加、添加并将状态设置为已修改,但它不起作用。我也尝试过分离 de 组件并再次附加它。有人可以告诉我我做错了什么吗?

非常感谢,并提前感谢。

对不起我的英语不好。

0 投票
2 回答
1424 浏览

.net - .net - dictionary.Keys.Add?

在 .Net 中,IDictionary<K, V>定义.Keys.Values属性中的每一个都是一个ICollection<>而不是IEnumerable<>,这似乎更适合我。

是否有任何合理的用例可以调用.Add.Remove的实例.Keys.ValuesIDictionary<K, V>

0 投票
2 回答
249 浏览

asp.net-mvc-3 - 添加到类型实体问题的 ICollection

有人可以帮忙吗不确定我在使用什么错误:

在我的控制器中:

RecommendAFriendViewModel 模型组属性:

推荐用户实体组属性:

在我得到的两条红线上:无法从“int”转换为“Zinc.Entities.Group.Group”
和:system.Collections.Generic.List.Add(Zinc.Entities.Group.Group) 的最佳重载方法匹配' 有一些无效的参数

可以告诉我我做错了什么吗?谢谢

0 投票
1 回答
1066 浏览

asp.net-mvc - ASP MVC3 - 编辑器模板在回发时将空值返回给控制器

几天来,我一直在为一个项目苦苦挣扎,在我当前的迭代中,我决定使用编辑器模板。

最初的问题源于通过 SQL 中的外键链接到辅助表的主表。在 ASP MVC 中,辅助表由以下字段表示:

因为这是一个集合对象,GET所以“编辑”页面上的“编辑”页面适用于每个特定项目,但是在POSTBACK所有集合项目上突然都为空。但是,所有其他字段都带有正确的数据。我正在尝试使用和编辑器模板,但是仍在返回集合项null

这是我在视图中使用的代码

这是编辑器模板。它的名称位于Views 文件夹 BankListAgentId中的一个文件夹中EditorTemplates在此处输入图像描述

这是BankListMaster模型中的代码

最后是BankListAgentId模型

编辑

用户将需要能够动态更改列表。