最基本的Lambda表达式
(参数列表)=>{f方法体}
参数列表中的参数类型可以是明确类型或者是推断类型
如果是推断类型,则参数的数据类型将由编译器根据上下文自动推断出来
linQ to Obejct的操作
一些简单的查询
下面所使用的Print方法在list中是没有,是自己写的拓展方法,代码在最下面
private void button5_Click(object sender, EventArgs e)
{
//LinQ to Object
//泛型集合
List<string> li = new List<string>() { "张三","李四","王五","赵六","钱七"};
//输出所有元素
// var list2 = li.Select(sd => sd);
//list2.Print();
//输出里面姓张的
//var list1 = li.Select(sd => sd).Where(sd => sd.StartsWith("张"));
// var list1 = li.Where(s => s.StartsWith("张"));
//var list3 = li.Where(s => Judge(s));
//list3.Print();
//进行排序 默认按照字母排序
//var list4 = li.OrderBy(s => s);
//按照最后一个字母排序
var list5 = li.OrderBy(s => s.Substring(s.Length - 1, 1)).Select(s => s);
list5.Print();
}
//进行复杂操作
public bool Judge(string s)
{
if (s.StartsWith("张"))
{
return true;
}
else
{
return false;
}
}
这个拓展方法并不是必要的,只是为了方便展示效果
/// <summary>
/// 创建一个静态的类,拓展类
/// </summary>
public static class ExtraClass
{
/// <summary>
/// 拓展方法 必须是静态的
/// </summary>
/// <param name="s">对哪一个属性进行的拓展</param>
/// <returns></returns>
//为IEnumerable提供输出方法
public static void Print(this IEnumerable ie)
{
IEnumerator IEU = ie.GetEnumerator();
while (IEU.MoveNext())
{
Console.WriteLine(IEU.Current);
}
}