您的位置:首页 > Web前端 > JQuery

jQuery find() 搜索所有段落中的后代 C# find() 第一个匹配元素 Func 有返回值 Action是没有返回值 Predicate 只有一个参数且返回值为bool 表达式树Expression

2018-08-24 12:14 597 查看

 

所有p后代span  

 Id为 TotalProject 的 select 标签 的后代 option标签 为选中的 text

 

 

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
List<string> sd = new List<string>() { "1", "1", "1" };
var sds = sd.Find(a => a == "1");
Console.WriteLine(sd.Find(a => a == "1"));

//Lambda 表达式 如果有去的时候 可以不写小括号  ()  --代表 参数
//Lambda 表达式 如果有回的时候 可以不写大括号  {}  --代表 方法体
//() => {}
Func<int> 有回 = () => 1;  // 无去有回
Func<int, int> 有去有回 = a => a + 1;  // 有去有回
Console.WriteLine(有回());
Console.WriteLine(有去有回(1));

Action<int> 无回 = a => Console.WriteLine(a);
Action<int, int> 无回2 = (a, b) => Console.WriteLine(a + b);
//Console.WriteLine(无回(1)); // : 无法从“void”转换为“string”
无回(1);
无回2(1, 2);

Predicate<string> 有去回bool = a => true;
Predicate<int> 有去回bool2 = a => 5 == a;
Console.WriteLine(有去回bool("asd"));
Console.WriteLine(有去回bool2(12));

var sdsdsds = sd.Where(a => a == "1");   // 去,集合中每个元素。 回,bool
//sd集合中 每个元素是否满足某条件  满足 返回true(当前元素 被过滤出来) 不满足 返回 false(当前元素 没被过滤出来)
//sd.Where()   linq 里面就是用这种方法查值的   委托

//表达式树里面的 T  是 TDelegate(委托泛型)  所以要为委托泛型的格式   也叫委托类型  委托也是有很多的类型的
// 1 的类型 是 int   "a" 的类型 是 string
// a => a == "1"  的类型 是  Func<string, bool>
// (a, b) => Console.WriteLine(a + b)   的类型 是  Action<int, int>
// a => 5 == a  的类型 是   Predicate<int>

//Expression 表达式树0 = a => 5 == a; //错误         无法将 lambda 表达式 转换为类型“System.Linq.Expressions.Expression”,因为它不是委托类型

Expression<Predicate<int>> 表达式树2 = a => 5 == a;  // 值虽然都一样   但 a => 5 == a   这一步 赋值给了 表达式树委托类型
Expression 表达式树 = 表达式树2;      // 表达式树委托类型值 隐形 转换为  基类表达式树委托  无冲突
//上面报错  只知道是委托 但不知道是哪种 表达式树委托类型    所以 表达式树委托 和 委托 是不一样的概念 虽然 值一样 可能
// Expression<Predicate<int>> 表达式树2 = a => 5 == a;  赋值的时候  内部做了处理

Console.WriteLine(表达式树2.ReturnType); //表达式树委托中 承载的 lambda 表达式(委托) 的返回类型。 bool
Console.WriteLine(表达式树2.Compile()(5)); //表达式树委托中 承载的 lambda 表达式(委托)   再传给个5 返回true

Expression<Func<int, int>> 表达式树有去有回 = a => a + 1;
Console.WriteLine(表达式树有去有回.ReturnType);    // 表达式树委托中 承载的 lambda 表达式(委托) 的返回类型。 int
Console.WriteLine(表达式树有去有回.Compile()(5)); // 表达式树委托中 承载的 lambda 表达式(委托)   再传给个5 返回 6

Expression<Action<int, int>> 表达式树有去无回 = (a, b) => Console.WriteLine(a + b);
Console.WriteLine(表达式树有去无回.ReturnType);    // 表达式树委托中 承载的 lambda 表达式(委托) 的返回类型。
//Void 空指针   null 是指针指向null 空
表达式树有去无回.Compile()(5, 6); // 表达式树委托中 承载的 lambda 表达式(委托)   再传给个5 6  返回 11

//说明  表达式树 的作用的 对委托(lambda 表达式) 的处理 加工   整合 重组  对更灵活 操作 委托(lambda 表达式) 提供一些帮助
}
}
}

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
List<string> sd = new List<string>() { "1", "1", "1" };
var sds = sd.Find(a => a == "1");
Console.WriteLine(sd.Find(a => a == "1"));

//Lambda 表达式 如果有去的时候 可以不写小括号  ()  --代表 参数
//Lambda 表达式 如果有回的时候 可以不写大括号  {}  --代表 方法体
//() => {}
Func<int> 有回 = () => 1;  // 无去有回
Func<int, int> 有去有回 = a => a + 1;  // 有去有回
Console.WriteLine(有回());
Console.WriteLine(有去有回(1));

Action<int> 无回 = a => Console.WriteLine(a);
Action<int, int> 无回2 = (a, b) => Console.WriteLine(a + b);
//Console.WriteLine(无回(1)); // : 无法从“void”转换为“string”
无回(1);
无回2(1, 2);

Predicate<string> 有去回bool = a => true;
Predicate<int> 有去回bool2 = a => 5 == a;
Console.WriteLine(有去回bool("asd"));
Console.WriteLine(有去回bool2(12));

var sdsdsds = sd.Where(a => a == "1");   // 去,集合中每个元素。 回,bool
//sd集合中 每个元素是否满足某条件  满足 返回true(当前元素 被过滤出来) 不满足 返回 false(当前元素 没被过滤出来)
//sd.Where()   linq 里面就是用这种方法查值的   委托

//表达式树里面的 T  是 TDelegate(委托泛型)  所以要为委托泛型的格式   也叫委托类型  委托也是有很多的类型的
// 1 的类型 是 int   "a" 的类型 是 string
// a => a == "1"  的类型 是  Func<string, bool>
// (a, b) => Console.WriteLine(a + b)   的类型 是  Action<int, int>
// a => 5 == a  的类型 是   Predicate<int>

//Expression 表达式树0 = a => 5 == a; //错误         无法将 lambda 表达式 转换为类型“System.Linq.Expressions.Expression”,因为它不是委托类型

Expression<Predicate<int>> 表达式树2 = a => 5 == a;  // 值虽然都一样   但 a => 5 == a   这一步 赋值给了 表达式树委托类型
Expression 表达式树 = 表达式树2;      // 表达式树委托类型值 隐形 转换为  基类表达式树委托  无冲突
//上面报错  只知道是委托 但不知道是哪种 表达式树委托类型    所以 表达式树委托 和 委托 是不一样的概念 虽然 值一样 可能
// Expression<Predicate<int>> 表达式树2 = a => 5 == a;  赋值的时候  内部做了处理

Console.WriteLine(表达式树2.ReturnType); //表达式树委托中 承载的 lambda 表达式(委托) 的返回类型。 bool
Console.WriteLine(表达式树2.Compile()(5)); //表达式树委托中 承载的 lambda 表达式(委托)   再传给个5 返回true

Expression<Func<int, int>> 表达式树有去有回 = a => a + 1;
Console.WriteLine(表达式树有去有回.ReturnType);    // 表达式树委托中 承载的 lambda 表达式(委托) 的返回类型。 int
Console.WriteLine(表达式树有去有回.Compile()(5)); // 表达式树委托中 承载的 lambda 表达式(委托)   再传给个5 返回 6

Expression<Action<int, int>> 表达式树有去无回 = (a, b) => Console.WriteLine(a + b);
Console.WriteLine(表达式树有去无回.ReturnType);    // 表达式树委托中 承载的 lambda 表达式(委托) 的返回类型。
//Void 空指针   null 是指针指向null 空
表达式树有去无回.Compile()(5, 6); // 表达式树委托中 承载的 lambda 表达式(委托)   再传给个5 6  返回 11

//说明  表达式树 的作用的 对委托(lambda 表达式) 的处理 加工   整合 重组  对更灵活 操作 委托(lambda 表达式) 提供一些帮助
}
}
}
//public static IQueryable<TSource> Where<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);
//public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
// IQueryable 提供对数据类型已知的特定数据源的查询进行计算的功能。 IQueryable  那个 到数据源中查 才能存到内存中
// IEnumerable 公开枚举数,该枚举数支持在指定类型的集合上进行简单迭代。 已经IEnumerable存到内存中了 只做 简单迭代
//所以 Expression<Func<TSource, bool>> predicate  带表达式树的 要去数据源中查 才能存到内存中
//Func<TSource, bool> predicate   不带表达式树的 直接根据 委托查的 直接 在内存中做 简单迭代

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐