是否有可能在C#中做到这一点?
Queue<string> helperStrings = {"right", "left", "up", "down"};
Run Code Online (Sandbox Code Playgroud)
或者我必须首先制作阵列?
我正在使用Entity Framework Code First来生成我的数据库,因此我有一个如下定义的对象:
public class Band
{
public int Id { get; set; }
[Required(ErrorMessage = "You must enter a name of this band.")]
public string Name { get; set; }
// ...
public virtual ICollection<Genre> Genres { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我正在寻找一个创建视图,默认的脚手架不是在我的表单中添加Genres,从过去的经验来看,这是我期望的.
在线查看我发现使用ASP.NET MVC v2 EditorFor和DisplayFor与IEnumerable <T>一般类型似乎最接近我想要的,但似乎没有用Razor和可能MVC 3,每ASP.使用UIHint的NET MVC 3自定义显示模板 - 是否需要循环?.
目前我已经将类型列表添加到ViewBag中,然后在我的创建视图中循环遍历该列表:
@{
List<Genre> genreList = ViewBag.Genres as List<Genre>;
}
// ...
<ul>
@for (int i = 0; i < genreList.Count; i++)
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 史蒂夫·桑德森(Steve Sanderson)的博客文章,其中涉及将收集项目绑定到模型。但是,我看到一些奇怪的行为,在帖子或其他讨论中找不到答案。
在我的模型中BankListMaster,我有ICollection一个单独模型的对象BankAgentId。BankListMaster并且BankListAgentId在我们的SQL数据库中具有一对多关系。
我在Edit页面上遇到了问题。页面加载时,我们当前与BankListMaster我正在处理的项目关联的三个代理ID会正确加载。但是,如果我点击“保存”,则会看到该ICollection对象(bankListAgentId)具有三个项目的计数,但是每个相应的字段都包含一个null值。
如果我选择Add another,则按照博客文章中,Ajax将调用部分视图,该视图将正确地附加到表中。
现在,如果我单击“保存”,我看到ICollection对象计数增加了一个项目,达到了4。所有最初GET重新加载项目的项目都包含null字段值,但是新附加项目的AgentId和StateCode字段包含正确的信息(新项目的所有其他字段为null)。
相对于ASP MVC来说还是相对较新的,所以我不确定正在发生什么或朝哪个方向看。
这是主视图中的表格。我已经尝试过有无@Html.Hidden项目,并且收到了相同的结果。
@model Monet.Models.BankListMaster
@{
ViewBag.Title = "Edit";
}
<fieldset>
<legend>Stat(s) Fixed</legend>
<table id="fixedRows">
<thead>
<tr>
<th>State Code</th>
<th>Agent ID</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < …Run Code Online (Sandbox Code Playgroud) 例如:我想有Add方法ICollection的自定义集合类来实现方法链接和流利的语言,所以我能做到这一点的:
randomObject.Add("I").Add("Can").Add("Chain").Add("This").
Run Code Online (Sandbox Code Playgroud)
我可以想到一些选项,但它们很混乱,并涉及将ICollection包装在另一个界面中等等.
I'm trying to post a complex type object to web api. On the web api side, when method recieves the object parameter, every property is set properly except a collection that is derived from ICollection.
Here is my sample classes:
public class MyClass
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private MyCollection<string> collection;
public MyCollection<string> Collection
{
get { return collection; }
set { collection = value; …Run Code Online (Sandbox Code Playgroud) 看看这段疯狂的代码:
ICollection<int> list = new[] {1, 2, 3};
list.Add(4); // NotSupportedException: Collection was of a fixed size.
Run Code Online (Sandbox Code Playgroud)
我不怀疑这个例外!我想知道可以将一个简单的数组分配给ICollection<T>. 我看到了Array工具IList,ICollection但据我所知它从未实现ICollection<T>!
这是我拥有的数据模型:
public class Team
{
[Key]
public int Id { get; set;}
[Required]
public string Name { get; set; }
[MinLength(1)]
public virtual ICollection<User> Users { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我稍后尝试创建一个新团队(有一个用户)时,我在保存上下文时遇到以下问题。
调用 System.ComponentModel.DataAnnotations.MinLengthAttribute.IsValid 时,在验证“用户”期间抛出意外异常。有关详细信息,请参阅内部异常。
内部异常如下:
{“无法将“System.Collections.Generic.List`1[MyNameSpace.Model.User]”类型的对象转换为“System.Array”。”}
这是实际保存的代码(现在在控制器中):
if (ModelState.IsValid)
{
team.Users = new List<User>();
team.Users.Add(CurrentUser);//CurrentUser is a property that gives me the currently active User (MyNamespace.Model.User).
DB.Teams.Add(team);//DB is a DbContext object that holds DbSets of all my models
DB.SaveChanges();
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
那么,这里发生了什么?我做错了什么,还是发生了其他事情?
我正在使用C#创建的库.我一直在努力将一些代码移植到F#,但必须使用C#lib中的一些底层类型.
一段代码需要计算值列表并将其分配给类中的公共字段/属性.该字段是一个包含两个ICollection的C#类.
我的F#代码工作正常,需要返回F#Seq/List.
我尝试了以下代码片段,每个代码片段都会产生错误.
类中的公共字段,它本身包含两个ICollection对象
this.field.Collection1 = recoveries
Run Code Online (Sandbox Code Playgroud)这给出了错误Expected具有类型ICollection但具有类型Recoveries列表
this.field.Collection1 = new ResizeArray<Recoveries>()
Run Code Online (Sandbox Code Playgroud)
给出错误预期类型ICollection但是ResizeArray
this.field.Collection1 = new System.Collections.Generic.List<Recoveries>()
Run Code Online (Sandbox Code Playgroud)
与上面相同的错误 - 预期的ICollection但类型是List
有任何想法吗?从C#的角度来看,这些操作似乎是有效的,而List/ResizeArray实现了ICollection所以...我很困惑如何分配值.
我可以更改底层C#库的类型,但这可能有其他含义.
谢谢
我有一个ICollection的Thing.Thing有string房产Name.我想得到一个Name在我的所有ICollection.我知道我可以通过遍历集合并构建数组来实现这一点,但是有一种更简洁的方法来使用lambda表示法吗?
我注意到c#中的数组实现了ICollection<T>.数组如何实现通用容器接口,但本身不是通用的?我们可以这样做吗?
编辑:我也想知道数组是如何通用的,但它接受任何类型并具有类型安全性.
public class ListOfStrings : IList<string>
{
...
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的例子,表明我们可以从泛型创建非泛型(谢谢MarcinJuraszek !!).这个集合会被字符串困住.我的猜测是它与字符串的泛型值类型声明无关,而且是我不熟悉的一些内部连线.
再次感谢你!