猿教程 Logo

Linq运算符:Select, SelectMany

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

LINQ中有两个投影运算符。 1) Select 2) SelectMany


Select:

Select运算符总是返回一个包含基于变换函数的元素的IEnumerable集合。 它类似于生成平面结果集的SQL的Select子句。

现在,让我们使用以下Student类来了解Select查询运算符。

相关实例:

public class Student{ 
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public int Age { get; set; }
}

在查询语法中的Select:

LINQ查询语法必须以Select或GroupBy子句结尾。 以下示例演示了返回StudentName的字符串集合的select运算符。

相关实例:

IList<Student> studentList = new List<Student>() { 
    new Student() { StudentID = 1, StudentName = "John" },
    new Student() { StudentID = 2, StudentName = "Moin" },
    new Student() { StudentID = 3, StudentName = "Bill" },
    new Student() { StudentID = 4, StudentName = "Ram" },
    new Student() { StudentID = 5, StudentName = "Ron" } 
};

var selectResult = from s in studentList
                   select s.StudentName;

select操作符可用于根据我们的要求来配置结果。 它可以用于返回自定义类或匿名类型的集合,其中包括根据我们的需要的属性。

以下select子句的示例返回包含Name和Age属性的匿名类型的集合。

相关实例:

IList<Student> studentList = new List<Student>() { 
    new Student() { StudentID = 1, StudentName = "John", Age = 13 } ,
    new Student() { StudentID = 2, StudentName = "Moin",  Age = 21 } ,
    new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,
    new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,
    new Student() { StudentID = 5, StudentName = "Ron" , Age = 15 } 
};

// returns collection of anonymous objects with Name and Age property
var selectResult = from s in studentList
                   select new { Name = "Mr. " + s.StudentName, Age = s.Age }; 

// iterate selectResult
foreach (var item in selectResult)
    Console.WriteLine("Student Name: {0}, Age: {1}", item.Name, item.Age);

相关实例:

Dim selectResult = From s In studentList
                   Select New With {.Name = s.StudentName, .Age = s.Age}

运行结果:

Student Name: Mr. John, Age: 13 
Student Name: Mr. Moin, Age: 21
Student Name: Mr. Bill, Age: 18
Student Name: Mr. Ram, Age: 20
Student Name: Mr. Ron, Age: 15

在方法语法中的Select:

Select运算符在方法语法中是可选的。 但是,您可以使用它来塑造数据。 在以下示例中,Select扩展方法返回具有Name和Age属性的匿名对象的集合:

相关实例:

IList<Student> studentList = new List<Student>() { 
    new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,
    new Student() { StudentID = 2, StudentName = "Moin",  Age = 21 } ,
    new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,
    new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,
    new Student() { StudentID = 5, StudentName = "Ron" , Age = 21 } 
};
    
var selectResult = studentList.Select(s => new { Name = s.StudentName , 
                                                 Age = s.Age  });

在上面的示例中,selectResult将包含具有Name和Age属性的匿名对象,如下所示在调试视图中。


相关实例:

Dim selectResult = studentList.Select(Function(s) New With {.Name = s.StudentName,
                                                            .Age = s.Age})

Select Many:

SelectMany运算符计算基于变换函数的值序列,然后将它们平面化为一个序列。

访问MSDN了解更多信息。

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Linq/linq-projection-operators.html