我正在尝试使用jstree和im使用mvc项目来填充树。
到目前为止它运作良好,但现在我决定将一个属性从字符串变为int。
我之所以这样做是因为我正在更改的属性是一个ID属性,我希望从我拥有的列表中获取最高的id并将其增加为1。
代码:
List<TreeNode> Nodes = getTreenodeList();
var NewId = Nodes.Select(x => x.Id.Max()) +1;
上面的代码给出了以下错误: &#34;无法转换为&#39; int&#39;到&#39; System.Collections.Generic.IEnumerable&#34;
getTreenodeList:
public static List<TreeNode> getTreenodeList()
{
var treeNodes = new List<TreeNode>
{
new TreeNode
{
Id = 1,
Text = "Root"
},
new TreeNode
{
Id = 2,
Parent = "Root",
Text = "Child1"
}
,
new TreeNode
{
Id = 3,
Parent = "Root",
Text = "Child2"
}
,
new TreeNode
{
Id = 4,
Parent = "Root",
Text = "Child3"
}
};
// call db and get all nodes.
return treeNodes;
}
最后是treeNode类:
public class TreeNode
{
[JsonProperty(PropertyName = "id")]
public int Id { get; set; }
[JsonProperty(PropertyName = "parent")]
public string Parent { get; set; }
[JsonProperty(PropertyName = "text")]
public string Text { get; set; }
[JsonProperty(PropertyName = "icon")]
public string Icon { get; set; }
[JsonProperty(PropertyName = "state")]
public TreeNodeState State { get; set; }
[JsonProperty(PropertyName = "li_attr")]
public string LiAttr { get; set; }
[JsonProperty(PropertyName = "a_attr")]
public string AAttr { get; set; }
}
到目前为止,我的googeling结果通过使用firstorDeafut给了我一些尝试,我发现应该将theienumrable转换为int但遗憾的是没有用。我尝试了其他几种情况,但没有一种情况有所帮助。
我可以诚实地说,我真的不明白这里的问题是什么,所以如果有人在那里有答案,我会深深体会到这一点。
谢谢!
答案 0 :(得分:2)
你必须这样做以获得最大ID:
var NewId = Nodes.Max(x => x.Id) +1;
有关详细信息和理解,请参阅:
http://code.msdn.microsoft.com/LINQ-Aggregate-Operators-c51b3869#MaxElements
答案 1 :(得分:2)
此声明(如果有效)
Nodes.Select(x => x.Id.Max())
会返回IEnumerable<int>
而不是Int
。替换为:
Nodes.Select(x => x.Id).Max()
此外,您的字段Id
将只保留一个Value
,因此对其应用Max
将是错误的。
您的代码应为:
var NewId = Nodes.Select(x => x.Id).Max() + 1;