• C#语法中的select


    1、简单的例子

    代码
    class SelectSample1
    {   
        
    static void Main()
        {           
            
    //Create the data source
            List<int> Scores = new List<int>() { 97928160 };

            
    // Create the query.
            IEnumerable<int> queryHighScores =
                from score 
    in Scores
                
    where score > 80
                select score;

            
    // Execute the query.
            foreach (int i in queryHighScores)
            {
                Console.Write(i 
    + " ");
            }            
        }
    }

    2、集合序列化:

    代码
            private XElement SerializeDesignerItems(IEnumerable<DesignerItem> designerItems)
            {
                XElement serializedItems 
    = new XElement("DesignerItems",
                                           from item 
    in designerItems
                                           let contentXaml 
    = XamlWriter.Save(((DesignerItem)item).Content)
                                           select 
    new XElement("DesignerItem",
                                                      
    new XElement("Left", Canvas.GetLeft(item)),
                                                      
    new XElement("Top", Canvas.GetTop(item)),
                                                      
    new XElement("Width", item.Width),
                                                      
    new XElement("Height", item.Height),
                                                      
    new XElement("ID", item.ID),
                                                      
    new XElement("zIndex", Canvas.GetZIndex(item)),
                                                      
    new XElement("IsGroup", item.IsGroup),
                                                      
    new XElement("ParentID", item.ParentID),
                                                      
    new XElement("Content", contentXaml)
                                                  )
                                       );

                
    return serializedItems;
            }

    3、下面的示例演示了 select 子句可能采用的所有不同形式。在每个查询中,请注意 select 子句和查询变量(studentQuery1studentQuery2 等)的类型之间的关系。

    代码
        class SelectSample2
        {
            
    // Define some classes
            public class Student
            {
                
    public string First { getset; }
                
    public string Last { getset; }
                
    public int ID { getset; }
                
    public List<int> Scores;
                
    public ContactInfo GetContactInfo(SelectSample2 app, int id)
                {
                    ContactInfo cInfo 
    =
                        (from ci 
    in app.contactList
                        
    where ci.ID == id
                        select ci)
                        .FirstOrDefault();

                    
    return cInfo;
                }

                
    public override string ToString()
                {
                    
    return First + " " + Last + ":" + ID;
                }
            }

            
    public class ContactInfo
            {
                
    public int ID { getset; }
                
    public string Email { getset; }
                
    public string Phone { getset; }
                
    public override string ToString() { return Email + "," + Phone; }
            }

            
    public class ScoreInfo
            {
                
    public double Average { getset; }
                
    public int ID { getset; }
            }

            
    // The primary data source
            List<Student> students = new List<Student>()
            {
                 
    new Student {First="Svetlana", Last="Omelchenko", ID=111, Scores= new List<int>() {97928160}},
                 
    new Student {First="Claire", Last="O'Donnell", ID=112, Scores= new List<int>() {75849139}},
                 
    new Student {First="Sven", Last="Mortensen", ID=113, Scores= new List<int>() {88946591}},
                 
    new Student {First="Cesar", Last="Garcia", ID=114, Scores= new List<int>() {97898582}},
            };

            
    // Separate data source for contact info.
            List<ContactInfo> contactList = new List<ContactInfo>()
            {
                
    new ContactInfo {ID=111, Email="SvetlanO@Contoso.com", Phone="206-555-0108"},
                
    new ContactInfo {ID=112, Email="ClaireO@Contoso.com", Phone="206-555-0298"},
                
    new ContactInfo {ID=113, Email="SvenMort@Contoso.com", Phone="206-555-1130"},
                
    new ContactInfo {ID=114, Email="CesarGar@Contoso.com", Phone="206-555-0521"}
            };


            
    static void Main(string[] args)
            {
                SelectSample2 app 
    = new SelectSample2();

                
    // Produce a filtered sequence of unmodified Students.
                IEnumerable<Student> studentQuery1 =
                    from student 
    in app.students
                    
    where student.ID > 111
                    select student;

                Console.WriteLine(
    "Query1: select range_variable");
                
    foreach (Student s in studentQuery1)
                {
                    Console.WriteLine(s.ToString());
                }

                
    // Produce a filtered sequence of elements that contain
                
    // only one property of each Student.
                IEnumerable<String> studentQuery2 =
                    from student 
    in app.students
                    
    where student.ID > 111
                    select student.Last;

                Console.WriteLine(
    "\r\n studentQuery2: select range_variable.Property");
                
    foreach (string s in studentQuery2)
                {
                    Console.WriteLine(s);
                }

                
    // Produce a filtered sequence of objects created by
                
    // a method call on each Student.
                IEnumerable<ContactInfo> studentQuery3 =
                    from student 
    in app.students
                    
    where student.ID > 111
                    select student.GetContactInfo(app, student.ID);

                Console.WriteLine(
    "\r\n studentQuery3: select range_variable.Method");
                
    foreach (ContactInfo ci in studentQuery3)
                {
                    Console.WriteLine(ci.ToString());
                }

                
    // Produce a filtered sequence of ints from
                
    // the internal array inside each Student.
                IEnumerable<int> studentQuery4 =
                    from student 
    in app.students
                    
    where student.ID > 111
                    select student.Scores[
    0];

                Console.WriteLine(
    "\r\n studentQuery4: select range_variable[index]");
                
    foreach (int i in studentQuery4)
                {
                    Console.WriteLine(
    "First score = {0}", i);
                }

                
    // Produce a filtered sequence of doubles 
                
    // that are the result of an expression.
                IEnumerable<double> studentQuery5 =
                    from student 
    in app.students
                    
    where student.ID > 111
                    select student.Scores[
    0* 1.1;

                Console.WriteLine(
    "\r\n studentQuery5: select expression");
                
    foreach (double d in studentQuery5)
                {
                    Console.WriteLine(
    "Adjusted first score = {0}", d);
                }

                
    // Produce a filtered sequence of doubles that are
                
    // the result of a method call.
                IEnumerable<double> studentQuery6 =
                    from student 
    in app.students
                    
    where student.ID > 111
                    select student.Scores.Average();

                Console.WriteLine(
    "\r\n studentQuery6: select expression2");
                
    foreach (double d in studentQuery6)
                {
                    Console.WriteLine(
    "Average = {0}", d);
                }

                
    // Produce a filtered sequence of anonymous types
                
    // that contain only two properties from each Student.
                var studentQuery7 =
                    from student 
    in app.students
                    
    where student.ID > 111
                    select 
    new { student.First, student.Last };

                Console.WriteLine(
    "\r\n studentQuery7: select new anonymous type");
                
    foreach (var item in studentQuery7)
                {
                    Console.WriteLine(
    "{0}, {1}", item.Last, item.First);
                }

                
    // Produce a filtered sequence of named objects that contain
                
    // a method return value and a property from each Student.
                
    // Use named types if you need to pass the query variable 
                
    // across a method boundary.
                IEnumerable<ScoreInfo> studentQuery8 =
                    from student 
    in app.students
                    
    where student.ID > 111
                    select 
    new ScoreInfo
                    {
                        Average 
    = student.Scores.Average(),
                        ID 
    = student.ID
                    };

                Console.WriteLine(
    "\r\n studentQuery8: select new named type");
                
    foreach (ScoreInfo si in studentQuery8)
                {
                    Console.WriteLine(
    "ID = {0}, Average = {1}", si.ID, si.Average);
                }

                
    // Produce a filtered sequence of students who appear on a contact list
                
    // and whose average is greater than 85.
                IEnumerable<ContactInfo> studentQuery9 =
                    from student 
    in app.students
                    
    where student.Scores.Average() > 85
                    join ci 
    in app.contactList on student.ID equals ci.ID
                    select ci;

                Console.WriteLine(
    "\r\n studentQuery9: select result of join clause");
                
    foreach (ContactInfo ci in studentQuery9)
                {
                    Console.WriteLine(
    "ID = {0}, Email = {1}", ci.ID, ci.Email);
                }

                
    // Keep the console window open in debug mode
                Console.WriteLine("Press any key to exit.");
                Console.ReadKey();
                }
            }
        
    /* Output
            Query1: select range_variable
            Claire O'Donnell:112
            Sven Mortensen:113
            Cesar Garcia:114

            studentQuery2: select range_variable.Property
            O'Donnell
            Mortensen
            Garcia

            studentQuery3: select range_variable.Method
            ClaireO@Contoso.com,206-555-0298
            SvenMort@Contoso.com,206-555-1130
            CesarGar@Contoso.com,206-555-0521

            studentQuery4: select range_variable[index]
            First score = 75
            First score = 88
            First score = 97

            studentQuery5: select expression
            Adjusted first score = 82.5
            Adjusted first score = 96.8
            Adjusted first score = 106.7

            studentQuery6: select expression2
            Average = 72.25
            Average = 84.5
            Average = 88.25

            studentQuery7: select new anonymous type
            O'Donnell, Claire
            Mortensen, Sven
            Garcia, Cesar

            studentQuery8: select new named type
            ID = 112, Average = 72.25
            ID = 113, Average = 84.5
            ID = 114, Average = 88.25

            studentQuery9: select result of join clause
            ID = 114, Email = CesarGar@Contoso.com
    */



    (全文完)


    以下为广告部分

    您部署的HTTPS网站安全吗?

    如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!

    SSL检测评估

    快速了解HTTPS网站安全情况。

    安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。

    SSL证书工具

    安装部署SSL证书变得更方便。

    SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。

    SSL漏洞检测

    让服务器远离SSL证书漏洞侵扰

    TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。

  • 相关阅读:
    mysql关联更新like,CONCAT,Length 函数使用
    泛型类
    libwebp 解码 webp格式的图片或者动画【源码】
    windwos自带的 一个xml库 MSXML 兼容宽字符
    使用华为云的arm搭建gogs
    centos7 arm mysql 安装
    关于脱壳的一些笔记
    关于OD调试的一些笔记
    关于对《汇编语言》第3版 作者:王爽的阅读总结
    使用Proxifier + Fiddler 抓任何包
  • 原文地址:https://www.cnblogs.com/zhuqil/p/1650649.html
Copyright © 2020-2023  润新知