• Linq To Object 转 L


     

    本人开发的开发者技术变现资源聚集地,大家支持下,下面是网址

     

    https://www.baiydu.com

     

     

     

    使用Linq可以用更小的语句查询XML中的节点,这的确比以前方便多了,在网页: 中介绍了相关的例子,写成程序显示一下吧。程序操作的XML文件位于:  程序代码: using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq;
    public sealed class Programs {     public static void Main()     { //获取采购单每个项元素的部件号属性值 var purchaseOrder = XElement.Load("PurchaseOrder.xml", LoadOptions.None);         IEnumerable<string> partNos = from item in purchaseOrder.Descendants("Item") select (string)item.Attribute("PartNumber"); // 注意,这里可以进行显式类型转换。
    foreach (var num in partNos) Console.WriteLine(num);
    // 一个列表,列出值大于 100 美元的项,并根据部件号排序 IEnumerable<XElement> partNos2 = from item in purchaseOrder.Descendants("Item") where (int)item.Element("Quantity") *   (decimal)item.Element("USPrice") > 100 orderby (string)item.Element("ProductName") select item;
            foreach (var node in partNos2) Console.WriteLine((String)node.Element("ProductName"));     } }  在上面的代码中,注意几点: 1:Descendants()里面要求提供的是XName参数,但如果提供了String 会直接进行隐式转换。 2:Descendants()可以不仅可以是下级元素,还可以是下下级元素。 3:为更快地获得元素的内容,可以直接进行类型转换,这很方便!  运行效果:

     

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
     
    namespace ExtendMethodsTestOfIEnumerable
    {
        class Program
        {
            static void Main(string[] args)
            {
                IEnumerable<string> list = new List<string>() { "1", "3", "5", "7", "9", "2", "4", "6", "8", "10" };
               
                string list1 = list.Aggregate<string>(delegate(string arg1, string arg2)
                {
                    return arg1 + "*" + arg2;
                });
                Console.WriteLine("IEnumerable<string>.Aggregate " + list1);
     
                bool list2 = list.All<string>(delegate(string element)
                {
                    if (element.CompareTo("5") > 0) return true;
                    else return false;
                });
                Console.WriteLine("IEnumerable<string>.All " + list2);
     
                bool list3 = list.Any<string>(delegate(string element)
                {
                    if (element.CompareTo("5") > 0) return true;
                    else return false;
                });
                Console.WriteLine("IEnumerable<string>.Any " + list3);
     
                double list4 = list.Average<string>(delegate(string element)
                {
                    if (element != null) return element.Length;
                    return 0;
                });
                Console.WriteLine("IEnumerable<string>.Average " + list4);
     
                int list5 = list.Count<string>(delegate(string element)
                {
                    if (element.Length > 5) return true;
                    else return false;
                });
                Console.WriteLine("IEnumerable<string>.Count " + list5);
     
                string list6 = list.First<string>(delegate(string element)
                {
                    if (element.Length > 1) return true;
                    return false;
                });
                Console.WriteLine("IEnumerable<string>.First " + list6);
     
                string list7 = list.FirstOrDefault<string>(delegate(string element)
                {
                    if (element.Length > 2) return true;
                    return false;
                });
                Console.WriteLine("IEnumerable<string>.FirstOrDefault " + list7);
     
                IEnumerable<IGrouping<int,string>> list8= list.GroupBy<string, int>(delegate(string element)
                {
                    if (element.Length > 1) return 2;
                    return 1;
                });
                Console.WriteLine("IEnumerable<string>.GroupBy: ");
                foreach (IGrouping<int, string> element in list8)
                {
                    Console.WriteLine("\t" + element.Key + ":" + element.Aggregate<string>((x, y) => x + y));
                }
     
                List<string> other = new List<string>() {"xxx","yyy","zzz","new" };
                IEnumerable<string> list9= list.GroupJoin<string, string, int, string>(other,
                    delegate(string element) { if (element.Length > 1) return 2; return 1; },
                    delegate(string element) { if (element.CompareTo("yyy") <= 0) return 1; return 2; },
                    delegate(string element, IEnumerable<string> resultOfOther)
                    {
                        return element + resultOfOther.Aggregate<string>((x, y) => x + y);
                    });
                Console.WriteLine("IEnumerable<string>.GroupJoin:");
                foreach (string element in list9)
                {
                    Console.WriteLine("\t" + element);
                }
     
                IEnumerable<string> list10= list.Join<string, string, int, string>(other,
                                    delegate(string element) { if (element.Length > 1) return 2; return 1; },
                    delegate(string element) { if (element.CompareTo("yyy") <= 0) return 1; return 2; },
                    delegate(string arg1, string arg2)
                    {
                        return arg1 + arg2;
                    });
    Console.WriteLine("IEnumerable<string>.Join:\n\t" + list10.Aggregate<string>((x, y) => x + " " + y));
     
                IEnumerable<string> list11 = list.OrderBy<string, int>(delegate(string element)
                {
                    return Convert.ToInt32(element);
                });
                Console.WriteLine("IEnumerable<string>.OrderBy:\n\t" + list11.Aggregate<string>((x, y) => x + " " + y));
     
                IEnumerable<string> list12= list.Select<string, string>(delegate(string element)
                {
                    return "a" + element[0];
                });
                Console.WriteLine("IEnumerable<string>.Select:\n\t" + list12.Aggregate<string>((x, y) => x + " " + y));
     
                IEnumerable<string> list13= list.SelectMany<string, string>(delegate(string element)
                {
                    if (element.Length > 1) return new string[] { "xxx", "yyy" };
                    return new string[] { element };
                });
                Console.WriteLine("IEnumerable<string>.SelectMany:\n\t" + list13.Aggregate<string>((x, y) => x + " " + y));
     
                int list14 = list.Sum<string>(delegate(string element) { return element.Length; });
                Console.WriteLine("IEnumerable<string>.Sum:" + list14);
     
                IEnumerable<string> list15= list.Zip<string, string, string>(other,
                    delegate(string arg1, string arg2)
                    {
                        return arg1 + arg2;
                    });
                Console.WriteLine("IEnumerable<string>.Zip:\n\t" + list15.Aggregate<string>((x, y) => x + y));
     
                Console.Read();
            }
        }
    }
  • 相关阅读:
    C语言 · 猜算式
    C语言 · 2n皇后问题
    数据结构 · 二叉树遍历
    C语言 · 滑动解锁
    出现Exception in thread "main" java.lang.UnsupportedClassVersionError: org/broadinstitute/gatk/engine/CommandLineGATK : Unsupported major.minor version 52.0问题解决方案
    linux提取指定列字符并打印所有内容(awk)
    mapping生成sam文件时出现[mem_sam_pe] paired reads have different names错误
    出现“java.lang.AssertionError: SAM dictionaries are not the same”报错
    Linux运行Java出现“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space”报错
    Linux:echo中,>和>>的区别(保存结果和追加结果)
  • 原文地址:https://www.cnblogs.com/xiaoliao/p/3114147.html
Copyright © 2020-2023  润新知