//SelectMany
List<List<int>> Numbers = new List<List<int>>()
{
new List<int>{1,2,3},
new List<int>{4,5,6},
new List<int>{7,8,9} }; var result = Numbers.SelectMany(a => a);
foreach (var nubers in result)
{
Console.WriteLine(nubers);
} int[][] intarry = { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 }, new int[] { 7, 8, 9 } };
var result = intarry.SelectMany(a => a);
foreach (var nubers in result)
{
Console.WriteLine(nubers);
}
//Take:返回指定的元素个数=>从左至右
string[] arry = new string[] { "1", "2", "3", "4", "5" };
var result = (from query in arry select query).Take(2);
//var result= arry.Take(2);
foreach (var it in result)
{
Console.WriteLine(it);
}
//TakeWhile:返回连续满足条件的元素=>从左至右
string[] arry = new string[] { "1234", "2345", "345", "456", "567" };
var item = (from query in arry select query).TakeWhile(q => q.Length>3);
//var item = arry.TakeWhile(q => q.Length==4);
foreach (var it in item)
{
Console.WriteLine(it);
}
//Skip:跳过指定的元素个数=>从左至右
string[] ary = new string[] { "asp.net", "csharp","22", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight"};
var result = (from query in ary select query).Skip(8);
//var result = ary.Skip(8);
foreach (var it in result)
{
Console.WriteLine(it);
}
//SkipWhile:跳过连续满足条件的元素
string[] ary = new string[] { "asp.net", "csharp","22", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight"};
var result = ary.SkipWhile(q => q.Length > 3).TakeWhile(q => q.Length >= 2).Take(5);
foreach (var it in result)
{
Console.WriteLine(it);
}
//Concat:连接不同集合,不会自动过滤相同项
string[] ary = new string[] { "asp.net", "csharp","22", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight",
"linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs"
};
string[] arry = new string[] { "1234", "2345", "345", "456", "567" };
var result = ary.Concat(arry);
foreach (var it in result)
{
Console.WriteLine(it);
}
//OrderBy:正序排列
string[] ary = new string[] { "asp.net", "csharp","22", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight" };
var result = ary.OrderBy(q => q.Length);
foreach (var it in result)
{
Console.WriteLine(it);
}
//OrderByDescending:倒序排列
string[] ary = new string[] { "asp.net", "csharp","22", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight",
"linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs"
};
var result = ary.OrderByDescending(q => q.Length);
foreach (var it in result)
{
Console.WriteLine(it);
}
//ThenBy:对OrderBy与OrderByDescending排序的结果再进行以特定的条件进行正序排序
string[] ary = new string[] { "asp.net", "csharp","22", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight" };
var result = ary.OrderByDescending(q=>q.Length).ThenBy(q =>q);
foreach (var it in result)
{
Console.WriteLine(it);
}
//Distinct:过滤集合中的相同项;
string[] ary = new string[] { "asp.net", "csharp","22", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight",
"linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs"
};
var result = ary.Distinct();
foreach (var it in result)
{
Console.WriteLine(it);
}
//Union:连接不同集合,自动过滤相同项;
string[] ary = new string[] { "asp.net", "csharp","22","456", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight",
"linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs"
};
string[] arry = new string[] { "1234", "2345", "345", "456", "567", "asp.net", "asp.net ajax", };
var result = ary.Union(arry);
foreach (var it in result)
{
Console.WriteLine(it);
}
//Intersect:获取不同集合的相同项(交集)
string[] ary = new string[] { "asp.net", "csharp","22","456", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight",
"linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs"
};
string[] arry = new string[] { "1234", "2345", "345", "456", "567", "asp.net", "asp.net ajax", };
var result = ary.Intersect(arry);
foreach (var it in result)
{
Console.WriteLine(it);
}
//Except:从某集合中删除其与另一个集合中相同的项,并消除自身的重复项
string[] ary = new string[] { "asp.net", "csharp","22","456", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight",
"linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs"
};
string[] arry = new string[] { "1234", "2345", "345", "456", "567", "asp.net", "asp.net ajax", };
var result = ary.Except(arry);
foreach (var it in result)
{
Console.WriteLine(it);
}
//Single:根据表达式返回集合中的某一元素
string[] ary = { "css", "javascript", "sqlserver"};
//var result = ary.Single(q => q == "sqlserver" || q[2] == 'l');
var result = (from query in ary select query).Single(q => q == "sqlserver" || q[2] == 'l');
foreach (var it in result)
{
Console.Write(it);
}
//SingleOrDefault:根据表达式返回集合中的某一元素(如果没有则返回默认值)
string[] ary = new string[] {"22","456", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight",
"linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs"
};
var result="";
result = ary.SingleOrDefault(q => q == "javascript"); foreach (var it in result)
{
Console.Write(it);
}
//Reverse:对集合反向排序
string[] ary = new string[] {"22","456", "wcf", "wpf","wpf","wpf","wpf","wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight",
"linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs"
};
var result = ary.Reverse(); foreach (var it in result)
{
Console.WriteLine(it);
}
//Join:用来连接两个输入序列
string[] ary = new string[] {"22","456", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript","silverlight",
"linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs"
};
string[] arry = new string[] { "456", "asp.net", "asp.net ajax" };
var result = from _query in ary
join query in arry on _query equals query
select _query; foreach (var it in result)
{
Console.WriteLine(it);
}
//Cast:Cast操作符将类型为IEnumerable的集合对象转换成为IEnumerable<T>类型的集合对象
ArrayList arraylist = new ArrayList();
arraylist.Add("1111");
arraylist.Add("222");
arraylist.Add("3333");
IEnumerable<string> IE = arraylist.Cast<string>().Where(A => A.Length > 3);
foreach (string item in IE)
{
Console.WriteLine(item);
}
//结果:1111 3333
//ToArray:将一个输入序列转换成一个数组
List<string> list = new List<string>();
list.AddRange(new List<string>
{
"1","2","3","4","5"
});
string[] str = list.ToArray();
//ToList:操作符用于将一个输入序列转换成一个List<T>(System.Collections.Generic.List<T>)对象。
string[] arry = new string[] { "456", "asp.net", "asp.net ajax" };
List<string> str = arry.ToList();
//ToDictionary:操作符用于将一个输入序列转换成一个Dictionary<K,T>(System.Collections.Generic. Dictionary<K,T>)集合对象
List<Class> cla=new List<Class>();
for (int i = 0; i < 10; i++)
{
cla.Add(new Class { ClassID = i, ClassName = i.ToString(), StudentNumber = i + 30 });
} Dictionary<int, string> dic = cla.ToDictionary(new Func<Class, int>(A => A.ClassID), new Func<Class, string>(B => B.ClassName));
foreach (var item in dic.Keys)
{
Response.Write(item+"<br/>");
}
//ToLookup:操作符可以将一个输入序列转换成一个ILookup<K,T> (System.Linq.ILookup<K,T>)集合对象。ILookup<K,T>集合对象与Dictionary<K,T>集合对象非常相似,不同的是,在Dictionary<K,T>中一个键(key)只能对应一个元素;而在ILookup<K,T>中,一个键可以对应一组元素(一个序列)。
List<Class> cla = new List<Class>();
for (int i = 0; i < 10; i++)
{
cla.Add(new Class { ClassID = i, ClassName = i.ToString(), StudentNumber = i + 30 });
}
ILookup<int,string> Lookup= cla.ToLookup(new Func<Class, int>(A => A.ClassID), new Func<Class, string>(B => B.ClassName));
foreach (var item in Lookup)
{
Response.Write(item.Key + "<br/>");
}
//SequenceEqual:判断两个序列是否相等
int[] arr = { 4, 5, 6 };
int[] array = { 4, 5, 6 };
bool b = arr.SequenceEqual(array);
Console.WriteLine(b);
//First:返回输入序列的第一个元素或者满足条件的第一个元素
string[] arr = { "4", "52", "666666666" };
string str = arr.First(A => A.Length > 5);
Console.WriteLine(str);
        //结果:666666666
//FirstOrDefault:操作符的使用与First操作符非常相似,只是在没有找到元素时,First操作符会抛出一个异常对象,而FirstOrDefault操作符会返回一个相关类型默认值元素
string[] arr = { "4", "52", "66666" };
string array= arr.FirstOrDefault(new Func<string, bool>(A => A.Length>5));
Console.WriteLine(array);
//Last操作符用于返回输入序列的最后一个元素或者满足条件的最后一个元素
string[] arr = { "4", "52", "666666666" };
string str = arr.Last(A => A.Length > 5);
Console.WriteLine(str);
//LastOrDefault操作符的使用与Last操作符非常相似,只是在没有找到元素时,Last操作符会抛出一个异常对象,而LastOrDefault操作符会返回一个相关类型默认值元素

string[] arr = { "4", "52", "6666666" };
string array = arr.LastOrDefault(new Func<string, bool>(A => A.Length > 5));
Console.WriteLine(array);
//Single操作符用于从一个只含有一个元素的输入序列中返回唯一的元素或者满足特定条件的唯一元素。如果输入序列中的元素个数为零或者多于一个,Single操作符会抛出一个异常
string[] arr = { "4", "52", "6666666" };
string array = arr.Single(new Func<string, bool>(A => A.Length > 5));
Console.WriteLine(array);
//SingleOrDefault操作符的使用与Single操作符非常相似,只是在没有找到元素时,Single操作符会抛出一个异常对象,而SingleOrDefault操作符会返回一个相关类型默认值元素
string[] arr = { "4", "52", "6666655" };
string array = arr.SingleOrDefault(new Func<string, bool>(A => A.Length > 5));
Console.WriteLine(array);
//ElementAt操作符用于返回输入序列中指定位置的元素
string[] arr = { "4", "52", "6666655" };
string array = arr.ElementAt(2);
Console.WriteLine(array);
//ElementAtOrDefault操作符的使用与ElementAt操作符非常相似,只是在指定的位置索引值不合法的情况下(小于0或者大于或等于序列元素个数),ElementAt操作符会抛出一个异常对象,而ElementAtOrDefault操作符会返回一个相关类型默认值元素
string[] arr = { "4", "52", "6666655" };
string array = arr.ElementAtOrDefault(3);
Console.WriteLine(array);
//Any:操作符用于判断一个输入序列中是否含有元素或者含有满足特定条件的元素
string[] arr = { "4", "52", "6666655" };
bool b = arr.Any(new Func<string, bool>(A => A.Length == 8));
Console.WriteLine(b); //结果:False
//All操作符用于判断输入序列中的所有元素是否全部满足指定条件
string[] arr = { "4", "52", "6666655" };
bool b= arr.All(new Func<string, bool>(A => A.GetType() == typeof(string)));
Console.WriteLine(b); //结果:True
//Count:操作符用于获取输入序列的元素个数或者满足某个特定条件的元素个数
string[] arr = { "4", "52", "6666655" };
int I = arr.Count(new Func<string, bool>(A => A.Length > 2));
Console.WriteLine(I); //结果:1
//Sum:计算输入序列中所有元素数值总和
int[] arr = { 4, 52, 66};
int SUN = arr.Sum(new Func<int, int>(A => A));
Console.WriteLine(SUN); //结果:122
DataSet ds = Common.SqlDataAdapter(ConnStr.connStr, "select * from View_Salary", null);
var select = from query in ds.Tables[0].AsEnumerable() where query.Field<int>("Salary") > 0 select query;
int SumSalary = select.Sum(query => query.Field<int>("Salary"));
return SumSalary;
//Min:获取输入序列中所有元素的最小值
int[] arr = { 4, 52, 66};
int SUN = arr.Min(new Func<int, int>(A => A));
Console.WriteLine(SUN); //结果:4
//Max:操作符用于获取输入序列中所有元素的最大值
int[] arr = { 4, 52, 66};
int SUN = arr.Max(new Func<int, int>(A => A));
Console.WriteLine(SUN); //结果:66
//Average:操作符用于计算输入序列中全体元素的平均值
int[] arr = { 4, 52, 66};
double SUN = arr.Average(new Func<int, int>(A => A));
Console.WriteLine(SUN); //结果:40.6666666666667
//Select
var persons = new List<Person> {
new Person{userName="action", age=11},
new Person{userName="Boolean", age=26},
new Person{userName="new",age=25},
};
//var v = from fm in persons where fm.age > 20 select fm.userName.ToUpper();
var v = persons.Where(fm => fm.age > 20).Select(fm => fm.userName.ToUpper());
foreach (var item in v)
{
Console.WriteLine(item.ToString());
}
//AsEnumerable与orderby...ascending,正序
DataSet ds = Common.SqlDataAdapter(ConnStr.connStr, "select * from View_Salary", null);
var select = from query in ds.Tables[0].AsEnumerable() orderby query.Field<int>("Salary") ascending select query;
DataTable MyDataTable = select.CopyToDataTable<DataRow>();
return MyDataTable;
//orderby...descending,倒序
DataSet ds = Common.SqlDataAdapter(ConnStr.connStr, "select * from View_Salary", null);
var select = from query in ds.Tables[0].AsEnumerable() orderby query.Field<int>("Salary") descending select query;
DataTable MyDataTable = select.CopyToDataTable<DataRow>();
return MyDataTable;

Linq To Object的更多相关文章

  1. .NET面试题系列[13] - LINQ to Object

    .NET面试题系列目录 名言警句 "C# 3.0所有特性的提出都是更好地为LINQ服务的" - Learning Hard LINQ是Language Integrated Que ...

  2. LINQ系列:Linq to Object投影操作符

    投影是指在将序列中的元素转换为一个自定义形式的操作.投影操作符Select和SelectMany用于选择出赋予了适当功能的值.SelectMany操作符可以处理多个集合. LINQ表达式语法: 1. ...

  3. LINQ系列:Linq to Object生成操作符

    生成操作符从现有序列值中创建新的序列. 1. Empty  Empty操作符返回一个指定类型的空集. 1>. 原型定义 public static IEnumerable<TResult& ...

  4. LINQ系列:Linq to Object转换操作符

    转换是指将输入对象的类型转变为序列的动作. 1. AsEnumerable AsEnumerable操作符将查询的输入以IEnumberable(T)类型返回. 2. Cast Cast操作符将IEn ...

  5. LINQ系列:Linq to Object量词操作符

    量词操作符返回一个Boolean值,指示序列中是否存在部分或全部元素符号指定条件.LINQ中量词操作符包括:All.Any和Contains. 1. All All操作符判定在集合中是否所有的值都满足 ...

  6. LinQ To Object 基本用法

    http://www.cnblogs.com/terryzh/archive/2012/11/10/2763538.html LinQ To Object 基本用法 inq的基本语法:var resu ...

  7. SQO (标准查询运算符)方法 & Linq To Object

    #region SQO (标准查询运算符) 方法 #region Where() Find() FindAll() FirstOrDefault()等方法 static void c01where() ...

  8. 1.解剖Linq to object

    LINQ想必大家都不陌生了,它的出现使得我们的代码变得更短.更优雅了.至于LINQ是什么,Linq to object这类的扩展方法到底做了些什么.我们使用的EF是如何实现的(如何解析Expressi ...

  9. Linq to EF 与Linq to Object 使用心得

    大家都知道Linq既可以用来查询数据库对象(我这里指的是Entity FrameWork里的Model对象),也可以用来查询内存中的IEnumerable对象. 两者单独查询时都不会出现什么问题,不过 ...

  10. Linq to OBJECT延时标准查询操作符

    1.Where 操作符用于限定输入集合中的元素,将符合条件的元素组织声称一个序列结果.2.Select  操作符用于根据输入序列中的元素创建相应的输出序列中的元素,输出序列中的元素类型可以与输入序列中 ...

随机推荐

  1. Mantis 1.2.19 on Windows Server 2012 r2 datacenter 安装及配置随笔

    一.前言 新的小团队需要搭建一个缺陷管理的工具,之前用过bugfree,感觉比较适合,但是 禅道不太适合,放弃之,于是又百度推荐的: .JTrac13.BugNet14.BugOnline15.eTr ...

  2. DataSanp的控制老大-DSServer

    DSServer作用:管理DataSnap服务器生命周期.(启动,停止) 一.方法: 1.BroadcastMessage 向所以客户端发送消息,客户端必须已注册通道. 2.BroadcastObje ...

  3. delphi 10 seattle 安卓服务开发(三)

    delphi 10 里面的安卓服务有四种,上面的一篇文章里面的图有介绍. 今天做一个remote service 的例子.(里面一部分代码是抄别人的,如果不太清楚,自行恶补) remote servi ...

  4. 4.openssl passwd

    该伪命令用于生成加密的密码. [root@xuexi tmp]# whatis passwd ) - update user's authentication tokens ) - password ...

  5. random、面向对象编程

    一.random模块:随机数 import random print random.random() print random.randint(,) print random.randrange(,) ...

  6. linux C学习笔记05--信号量与共享内存(进程同步)

    花了半天时间把信号量与共享内存整合到了一起,先来看信号量代码,semaphore.c 当中sem_P()和sem_V()函数分别为信号量等待和信号量释放. 两个进程同时访问共享内存,为了避免发生同时读 ...

  7. CLR VIA C#委托

    1.什么是委托?委托就是一种回调函数的机制,将函数作为一个参数传递给其他对象,当该对象需要的时候调用委托来达到回调函数的目的. 通俗点的说法是:你将一件事情交给别人去做.例如你QQ里的自动回复,为了第 ...

  8. Linux socket 获得本地IP和广播地址

    #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netine ...

  9. spring junit

    转载自 http://blog.csdn.net/funi16/article/details/8691575 在写单元测试的时候,一般是对数据库进行增删改查的操作,这个时候,如果之前删除了某条记录, ...

  10. openLDAP

    错误提示: D:\OpenLDAP>slapd -d 256 515a48ae OpenLDAP 2.4.34 Standalone LDAP Server (slapd)515a48af co ...