对于List的All,Any,Where,FirstOrDefault,Average,Sum,Distinct,Union,AddRange,RemoveRange,InsertRange,GetRange操作
2014-10-13 18:47
232 查看
对于集合的操作发现现在越来越丰富,今日圣诞节,以常用的List<T>为例静静地看了集合的一些操作,用了发现还真方便。
一、集合的合并,插入,删除,显示
AddRange(一个集合):将指定集合的元素添加到末尾。
RemoveRange(要移除的元素的范围从零开始的起始索引,要移除的元素数):移除一定范围的元素
InsertRange(在此处插入新元素的从零开始的索引,一个集合):将集合插入到指定索引处。也可以对集合选择范围后再插入
GetRange(范围开始处从零开始的起始索引,范围中的元素数):返回指定范围的数据,此数据是一个浅表副本,浅表副本仅包含对
该集合的元素的引用
例如Program.cs的代码:
[c-sharp] view plaincopy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleAppList
{
class Program
{
static void Main(string[] args)
{
string[] stuName = { "AAAA", "BBBB", "CCCC"};
List<string> li = new List<string>(stuName);
Console.WriteLine("合并另一个集合:");
li.AddRange(li);
foreach (string name in li)
{
Console.WriteLine(name);
}
Console.WriteLine("/r/n删除操作(指定索引位置,删除个数):");
li.RemoveRange(2, 2);
foreach (string name in li)
{
Console.WriteLine(name);
}
Console.WriteLine("/r/n指定索引位置,插入另一个集合:");
stuName = new string[] {"张三","李四","王五"};
li.InsertRange(3, stuName);
//选择要插入的集合指定范围
//li.InsertRange(3, new List<string>(stuName).GetRange(1, 2));
foreach (string name in li)
{
Console.WriteLine(name);
}
Console.WriteLine("/r/n显示指定索引范围的数据:");
string[] output = li.GetRange(2, 3).ToArray();
//List<string> output = li.GetRange(2, 3);
foreach (string name in output)
{
Console.WriteLine(name);
}
}
}
}
运行结果:
合并另一个集合:
AAAA
BBBB
CCCC
AAAA
BBBB
CCCC
删除操作(指定索引位置,删除个数):
AAAA
BBBB
BBBB
CCCC
指定索引位置,插入另一个集合:
AAAA
BBBB
BBBB
张三
李四
王五
CCCC
显示指定索引范围的数据:
BBBB
张三
李四
请按任意键继续. . .
二、集合常用判断,选择,计算等功能
All()定序列中的所有元素是否满足条件。
Any()确定序列中的任何元素中,是否有存在或满足条件的元素。
Where()返回满足条件的元素.基于谓词筛选值序列
FirstOrDefault()返回序列中的第一个元素;如果序列中不包含任何元素,则返回默认值。
Average()值序列的平均值
Sum()值序列的和
Distinct()返回序列中的非重复元素
Union()通过使用默认的相等比较器生成两个序列的并集。去掉重复元素
例如Program2.cs的代码:
[c-sharp] view plaincopy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleAppList
{
public class Student
{
public string Name { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
Student[] stu={ new Student{Name="张三", Sex="男",Age=22},
new Student{Name="李四", Sex="男",Age=33},
new Student{Name="王五", Sex=" 女",Age=19}};
List<Student> li = new List<Student>(stu);
//是否所有学生都是男生
bool allMale = li.All(s => s.Sex == "男");
Console.WriteLine("是否所有学生都是男生:"+allMale);
//是否存在男生的学生
bool anyMale = li.Any(s => s.Sex == "男");
Console.WriteLine("/r/n是否存在男生的学生:" + anyMale);
//显示年龄大于或等于20的学生
Console.WriteLine("/r/n显示年龄大于或等于20的学生:");
IEnumerable<Student> query = li.Where(s => s.Age >= 20);
foreach (Student s in query)
{
Console.WriteLine("姓名:" + s.Name + ",性别:" + s.Sex + ",年龄" + s.Age.ToString());
}
//返回序列中的第一个元素
Console.WriteLine("/r/n返回序列中的第一个元素:");
Student sFirstDef = li.FirstOrDefault<Student>();
Console.WriteLine("姓名:" + sFirstDef.Name + ",性别:" + sFirstDef.Sex + ",年龄" + sFirstDef.Age.ToString());
//所有学生的平均年龄
double avgAge = li.Average<Student>(s => s.Age);
Console.WriteLine("/r/n所有学生的平均年龄:" + avgAge.ToString("f2"));
//所有学生的总龄
int avgSum = li.Sum<Student>(s => s.Age);
Console.WriteLine("/r/n所有学生的总龄:" + avgSum);
//返回序列中的非重复元素
List<int> ages = new List<int>() {22,33,22,19,28,27,22,33 };
IEnumerable<int> distinctAges = ages.Distinct<int>();
Console.WriteLine("/r/n返回序列中的非重复元素:");
foreach (int a in distinctAges)
{
Console.Write(a+",");
}
Console.WriteLine();
//生成两个序列的并集,去掉重复元素
Console.WriteLine("/r/n生成两个序列的并集,去掉重复元素:");
int[] ints1 = { 5, 3, 9, 7, 5};
int[] ints2 = { 8, 3, 6, 4, 4};
IEnumerable<int> union = ints1.Union(ints2);
foreach (int num in union)
Console.Write("{0} ", num);
Console.WriteLine();
}
}
}
运行结果:
是否所有学生都是男生:False
是否存在男生的学生:True
显示年龄大于或等于20的学生:
姓名:张三,性别:男,年龄22
姓名:李四,性别:男,年龄33
返回序列中的第一个元素:
姓名:张三,性别:男,年龄22
所有学生的平均年龄:24.67
所有学生的总龄:74
返回序列中的非重复元素:
22,33,19,28,27,
生成两个序列的并集,去掉重复元素:
5 3 9 7 8 6 4
请按任意键继续. . .
一、集合的合并,插入,删除,显示
AddRange(一个集合):将指定集合的元素添加到末尾。
RemoveRange(要移除的元素的范围从零开始的起始索引,要移除的元素数):移除一定范围的元素
InsertRange(在此处插入新元素的从零开始的索引,一个集合):将集合插入到指定索引处。也可以对集合选择范围后再插入
GetRange(范围开始处从零开始的起始索引,范围中的元素数):返回指定范围的数据,此数据是一个浅表副本,浅表副本仅包含对
该集合的元素的引用
例如Program.cs的代码:
[c-sharp] view plaincopy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleAppList
{
class Program
{
static void Main(string[] args)
{
string[] stuName = { "AAAA", "BBBB", "CCCC"};
List<string> li = new List<string>(stuName);
Console.WriteLine("合并另一个集合:");
li.AddRange(li);
foreach (string name in li)
{
Console.WriteLine(name);
}
Console.WriteLine("/r/n删除操作(指定索引位置,删除个数):");
li.RemoveRange(2, 2);
foreach (string name in li)
{
Console.WriteLine(name);
}
Console.WriteLine("/r/n指定索引位置,插入另一个集合:");
stuName = new string[] {"张三","李四","王五"};
li.InsertRange(3, stuName);
//选择要插入的集合指定范围
//li.InsertRange(3, new List<string>(stuName).GetRange(1, 2));
foreach (string name in li)
{
Console.WriteLine(name);
}
Console.WriteLine("/r/n显示指定索引范围的数据:");
string[] output = li.GetRange(2, 3).ToArray();
//List<string> output = li.GetRange(2, 3);
foreach (string name in output)
{
Console.WriteLine(name);
}
}
}
}
运行结果:
合并另一个集合:
AAAA
BBBB
CCCC
AAAA
BBBB
CCCC
删除操作(指定索引位置,删除个数):
AAAA
BBBB
BBBB
CCCC
指定索引位置,插入另一个集合:
AAAA
BBBB
BBBB
张三
李四
王五
CCCC
显示指定索引范围的数据:
BBBB
张三
李四
请按任意键继续. . .
二、集合常用判断,选择,计算等功能
All()定序列中的所有元素是否满足条件。
Any()确定序列中的任何元素中,是否有存在或满足条件的元素。
Where()返回满足条件的元素.基于谓词筛选值序列
FirstOrDefault()返回序列中的第一个元素;如果序列中不包含任何元素,则返回默认值。
Average()值序列的平均值
Sum()值序列的和
Distinct()返回序列中的非重复元素
Union()通过使用默认的相等比较器生成两个序列的并集。去掉重复元素
例如Program2.cs的代码:
[c-sharp] view plaincopy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleAppList
{
public class Student
{
public string Name { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
Student[] stu={ new Student{Name="张三", Sex="男",Age=22},
new Student{Name="李四", Sex="男",Age=33},
new Student{Name="王五", Sex=" 女",Age=19}};
List<Student> li = new List<Student>(stu);
//是否所有学生都是男生
bool allMale = li.All(s => s.Sex == "男");
Console.WriteLine("是否所有学生都是男生:"+allMale);
//是否存在男生的学生
bool anyMale = li.Any(s => s.Sex == "男");
Console.WriteLine("/r/n是否存在男生的学生:" + anyMale);
//显示年龄大于或等于20的学生
Console.WriteLine("/r/n显示年龄大于或等于20的学生:");
IEnumerable<Student> query = li.Where(s => s.Age >= 20);
foreach (Student s in query)
{
Console.WriteLine("姓名:" + s.Name + ",性别:" + s.Sex + ",年龄" + s.Age.ToString());
}
//返回序列中的第一个元素
Console.WriteLine("/r/n返回序列中的第一个元素:");
Student sFirstDef = li.FirstOrDefault<Student>();
Console.WriteLine("姓名:" + sFirstDef.Name + ",性别:" + sFirstDef.Sex + ",年龄" + sFirstDef.Age.ToString());
//所有学生的平均年龄
double avgAge = li.Average<Student>(s => s.Age);
Console.WriteLine("/r/n所有学生的平均年龄:" + avgAge.ToString("f2"));
//所有学生的总龄
int avgSum = li.Sum<Student>(s => s.Age);
Console.WriteLine("/r/n所有学生的总龄:" + avgSum);
//返回序列中的非重复元素
List<int> ages = new List<int>() {22,33,22,19,28,27,22,33 };
IEnumerable<int> distinctAges = ages.Distinct<int>();
Console.WriteLine("/r/n返回序列中的非重复元素:");
foreach (int a in distinctAges)
{
Console.Write(a+",");
}
Console.WriteLine();
//生成两个序列的并集,去掉重复元素
Console.WriteLine("/r/n生成两个序列的并集,去掉重复元素:");
int[] ints1 = { 5, 3, 9, 7, 5};
int[] ints2 = { 8, 3, 6, 4, 4};
IEnumerable<int> union = ints1.Union(ints2);
foreach (int num in union)
Console.Write("{0} ", num);
Console.WriteLine();
}
}
}
运行结果:
是否所有学生都是男生:False
是否存在男生的学生:True
显示年龄大于或等于20的学生:
姓名:张三,性别:男,年龄22
姓名:李四,性别:男,年龄33
返回序列中的第一个元素:
姓名:张三,性别:男,年龄22
所有学生的平均年龄:24.67
所有学生的总龄:74
返回序列中的非重复元素:
22,33,19,28,27,
生成两个序列的并集,去掉重复元素:
5 3 9 7 8 6 4
请按任意键继续. . .
相关文章推荐
- 对于List的All,Any,Where,FirstOrDefault,Average,Sum,Distinct,Union,AddRange,RemoveRange,InsertRange,GetRange操作
- 对于List的All,Any,Where,FirstOrDefault,Average,Sum,Distinct,Union,AddRange,RemoveRange,InsertRange,GetR
- 步步为营VS 2008 + .NET 3.5(7) - LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count、LongCount、Sum、Min、Max、Average、Aggregate、Cast、DefaultIfEmpty、SequenceEqual、OfType、ToArray、ToList、ToDictionary
- 7、步步为营VS 2008 + .NET 3.5(7) - LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count、LongCount、Sum、Min、Max、Average、Aggregate、Cast、DefaultIfEmpty、SequenceEqual、OfType、ToArray、ToList、ToDictionary
- LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Coun
- msyql中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍
- LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count 等
- Linq无聊练习系列6--Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习
- LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Coun
- LINQ标准查询操作符(三)——Aggregate、Average、Distinct、Except、Intersect、Union、Empty、DefaultIfEmpty、Range、Repeat
- 步步为营VS 2008 + .NET 3.5(7) - LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Coun
- Intersect, Except, Union, All and Any(2)
- MySQL中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍
- Intersect, Except, Union, All and Any(1)
- LINQ标准查询操作符(三)——Aggregate、Average、Distinct、Except、Intersect、Union、Empty、DefaultIfEmpty、Range、Repeat
- Intersect, Except, Union, All and Any(2)
- Intersect, Except, Union, All and Any(3)
- Intersect, Except, Union, All and Any(3)
- 大数据Spark “蘑菇云”行动第47课程 Spark 2.0实战之Dataset:collect_list、collect_set、avg、sum、countDistinct等
- Question[SQL]: How can I list all book with prices greather than the average price of books of the same type?