编程语言
首页 > 编程语言> > c#-如何解决以下错误:无法从’int’转换为’System.Collections.Generic.IEnumerable?

c#-如何解决以下错误:无法从’int’转换为’System.Collections.Generic.IEnumerable?

作者:互联网

我正在使用jstree和im使用mvc项目填充树进行实验.

到目前为止,它运行良好,但现在我决定将一个属性从字符串转换为整数.

我之所以这样做,是因为im更改属性是一个ID属性,我想从我拥有的列表中获得最高的id并将其递增1.

码:

List<TreeNode> Nodes = getTreenodeList();
var NewId = Nodes.Select(x => x.Id.Max()) +1;

上面的代码给我以下错误:
“无法从’int’转换为’System.Collections.Generic.IEnumerable”

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; }
    }

到目前为止,我的粘糊糊化结果通过使用firstorDeafut进行了一些尝试,我发现该函数应该将Inumerable转换为Int,但可悲的是这没有用.我尝试了其他一些方案,但是都没有帮助.

老实说,我真的不明白问题出在哪里,所以如果外面有人回答我,我也将不胜感激.

谢谢!

解决方法:

此声明(如果有效)

Nodes.Select(x => x.Id.Max())

将返回IEnumerable< int>.而不是单个Int.替换为:

Nodes.Select(x => x.Id).Max()

同样,您的字段ID将持有一个值,因此将Max应用于该值将是错误的.

您的代码应为:

var NewId = Nodes.Select(x => x.Id).Max() + 1;

标签:asp-net-mvc-4,linq-to-objects,linq,c
来源: https://codeday.me/bug/20191029/1959996.html