嵌套通用列表如何使用linq查询按产品名称在任何节点上查找元素. [英] Nested Generic List how to find elements at any node by product name using linq queries .

查看:95
本文介绍了嵌套通用列表如何使用linq查询按产品名称在任何节点上查找元素.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

public class SalesData
    {
       

        //private string Product;
        //private short Quantity;

        public SalesData(string p, int p_2)
        {
            // TODO: Complete member initialization
            this.Product = p;
            this.Quantity = p_2;
        }

        public SalesData()
        {
            // TODO: Complete member initialization
        }
        public SalesData(string p, int p_2, int p_3, int p_4, int p_5)
        {
            // TODO: Complete member initialization
            this.Product = p;
            this.Quantity = p_2;
            this.Segment = p_3;
            this.YtdMax = p_4;
            this.YtdMin = p_5;
        }
        public SalesData(string p, int p_2, int p_3,int p_4,int p_5,string p_6)
        {
            // TODO: Complete member initialization
            this.Product = p;
            this.Quantity = p_2;
            this.Parent = p_6;
            this.Segment = p_3;
            this.YtdMax = p_4;
            this.YtdMin = p_5;
        }
        public string Product { get; set; }
        public int Quantity { get; set; }
        public string Parent { get; set; }
        public int Segment { get; set; }
        public int YtdMax { get; set; }
        public int YtdMin { get; set; }

        public IList<salesdata> Children { get; set; }

        /// <summary>
        /// Gets the desired tooltip content.
        /// </summary>
        public string ToolTip
        {
            get
            {
                StringBuilder outStr = new StringBuilder();
                outStr.Append("Product: ").Append(Product);
                outStr.Append("\nQuantity: ").Append(Quantity);
                outStr.Append("\nYtd: ").Append(Segment);
                outStr.Append("\nYtdMax: ").Append(YtdMax);
                outStr.Append("\nYtdMin: ").Append(YtdMin);
                
                return outStr.ToString();
            }
        }
        
    }

//and in service code file i have initialised it as

 SalesData node = new SalesData();
        //node.Product = name;
        node.Product = "VCN"+name;

        node.Quantity = 0;//Convert.ToInt16(random.Next(30, 300));
        node.Segment = segmentID;
        node.Children = new SalesData[0];
        
        node.Children = new List<salesdata>();
        
        SalesData node1 = new SalesData();
        node1.Product = "HCN" + name;
        node1.Quantity = Convert.ToInt16(random.Next(30, 300));
        node1.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node1.YtdMax = 300;//Ytd
        node1.YtdMin = 30;//Ytd
       // node1.Segment = segmentID;
        node1.Children = new SalesData[0];

        node1.Children = new List<salesdata>();

        SalesData node2 = new SalesData();
        node2.Product = "ABC" + name;
        node2.Quantity = Convert.ToInt16(random.Next(30, 300));
        node2.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node2.YtdMax = 300;//Ytd
        node2.YtdMin = 30;//Ytd
        //node2.Segment = segmentID;
        node2.Children = new SalesData[0];

        node2.Children = new List<salesdata>();
         
        SalesData node3 = new SalesData();
        node3.Product = "def" + name;
        node3.Quantity = Convert.ToInt16(random.Next(30, 300));
        node3.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node3.YtdMax = 300;//Ytd
        node3.YtdMin = 30;//Ytd
        //node3.Segment = segmentID;
        node3.Children = new SalesData[1];
        node3.Children = new List<salesdata>();

        SalesData node4 = new SalesData();
        node4.Product = "ghi" + name;
        node4.Quantity = Convert.ToInt16(random.Next(30, 300));
        node3.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node3.YtdMax = 300;//Ytd
        node3.YtdMin = 30;//Ytd
        //node4.Segment = segmentID;
        node4.Children = new SalesData[0];

        node4.Children = new List<salesdata>();

        SalesData node5 = new SalesData();
        node5.Product = "jkm" + name;
        node5.Quantity = Convert.ToInt16(random.Next(30, 300));
        node3.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node3.YtdMax = 300;//Ytd
        node3.YtdMin = 30;//Ytd
        //node5.Segment = segmentID;
        node5.Children = new SalesData[0];

        node5.Children = new List<salesdata>();


        node3.Children.Add(node5);
        node3.Children.Add(node4);
        node3.Children.Add(node1);
        node3.Children.Add(node2);

        node.Children.Add(node3);


        SalesData node31 = new SalesData();
        node31.Product = "VCN" + name;

        node31.Quantity = 0;//Convert.ToInt16(random.Next(30, 300));
        node31.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node31.YtdMax= 300;//Ytd
        node31.YtdMin = 30;//Ytd
       // node31.Segment = segmentID;
        node31.Children = new SalesData[0];

        node31.Children = new List<salesdata>();

        SalesData node11 = new SalesData();
        node11.Product = "HCN" + name;
        node11.Quantity = Convert.ToInt16(random.Next(30, 300));
        node11.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node11.YtdMax = 300;//Ytd
        node11.YtdMin = 30;//Ytd
        //node11.Segment = segmentID;
        node11.Children = new SalesData[0];

        node11.Children = new List<salesdata>();

        SalesData node12 = new SalesData();
        node12.Product = "ABC" + name;
        node12.Quantity = Convert.ToInt16(random.Next(30, 300));
        node12.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node12.YtdMax = 300;//Ytd
        node12.YtdMin = 30;//Ytd
        //node12.Segment = segmentID;
        node12.Children = new SalesData[0];

        node12.Children = new List<salesdata>();

        SalesData node13 = new SalesData();
        node13.Product = "def" + name;
        node13.Quantity = Convert.ToInt16(random.Next(30, 300));
        node13.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node13.YtdMax = 300;//Ytd
        node13.YtdMin = 30;//Ytd
        //node13.Segment = segmentID;
        node13.Children = new SalesData[1];
        node13.Children = new List<salesdata>();

        SalesData node14 = new SalesData();
        node14.Product = "ghi" + name;
        node14.Quantity = Convert.ToInt16(random.Next(30, 300));
        node14.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node14.YtdMax = 300;//Ytd
        node14.YtdMin = 30;//Ytd
        // node14.Segment = segmentID;
        node14.Children = new SalesData[0];

        node14.Children = new List<salesdata>();

        SalesData node15 = new SalesData();
        node15.Product = "jkm" + name;
        node15.Quantity = Convert.ToInt16(random.Next(30, 300));
        node15.Segment = Convert.ToInt16(random.Next(30, 300));//Ytd
        node15.YtdMax = 300;//Ytd
        node15.YtdMin = 30;//Ytd
        //node15.Segment = segmentID;
        node15.Children = new SalesData[0];

        node15.Children = new List<salesdata>();


        node13.Children.Add(node15);
        node13.Children.Add(node14);
        node13.Children.Add(node11);
        node13.Children.Add(node12);

        node31.Children.Add(node13);

        SalesData node21 = new SalesData();
        node21.Product = "VCN" + name;

        node21.Quantity = 0;//Convert.ToInt16(random.Next(30, 300));
        node21.Segment = segmentID;
        node21.Children = new SalesData[0];

        node21.Children = new List<salesdata>();

        node21.Children.Add(node31);
        node21.Children.Add(node);


现在我想要的是什么

提取名称为"VCN"的记录,并在任何级别的节点上都可以访问.

[edit]修改代码块以编码HTML字符(摆脱虚假的结束标签)-OriginalGriff [/edit]


Now what i want

fetch the records having name "VCN" and at any level node how can i access.

[edit]Code block modified to encode HTML characters (get rid of spurious closing tags) - OriginalGriff[/edit]

推荐答案

我不太了解,但是请尝试这个:

i dont understand well but try this my friend:

listName.FindAll(p => p.Product == "VCN")



通过这种方式,您可以通过列表进行搜索,找到包含特定属性的特定值的所有项目



by this way you can search via a list and find all items that contain a specific value of a specific attribute


这篇关于嵌套通用列表如何使用linq查询按产品名称在任何节点上查找元素.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆