### 笔记:
1. 如何删除一列数据中的某一批数据
A. // 从后往前删除 for(int i = list.count()-1; i>=0; i++);
B. // 设置标记删除 dt.Rows[i].Delete(); dt.AcceptChanges(); // 提交 dt.RejectChanges();
2. LAMDA表达式
Eq: list.Find(Predicate<T> match); // 函数或者lamda表达式 第一个匹配
Eq: T= list.FindLast(Predicate<T> match) ;// 查找最后一个
Eq: bool = list.TrueForAll(Predicate<T> match); // 所有元素都匹配返回true
Eq: List<T> = list.FindAll(Predicate<T> match) ;// 所有匹配成功的元素返回
Eq: List<T> = list.Take(n); // 获取前n行
Eq: List<T> = list.Where(Predicate<T> match); // 获取条件匹配元素
Eq: int = list.RemoveAll(Predicate<T> match) ;// 删除所有满足条件的元素,list为删除后结果
Eq: int = list.IndexOf(T t); // 返回当前元素索引
// 代码示例
List<String> list = new List<String>();
string listFind = mList.Find(
name=>{
return name.Length > 3 ? true : false;
}
)
3. Delegate, Func, Action, Predicate 各种委托区别
Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型。这个是祖宗。
Func可以接受0个至16个传入参数,必须具有返回值。
Action可以接受0个至16个传入参数,无返回值。
Predicate只能接受一个传入参数,返回值为bool类型
Lamda表达式可以定义委托 p=>{Console.WriteLine(p);}
清空委托声明:
A.while(this.OnDelegate != null) this.OnDelegate -= this.OnDelegate;
B.System.Delegate[] dels = this.OnDelegate.GetInvocationList(); //所有委托名
4.委托的特点:
委托类似于 C++ 函数指针,但它们是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
方法不必与委托签名完全匹配。
5.其他
Eq: A.list.Contains(orlc,new ITEM_GIDComparer) // 数据量大时使用
B.list.Exists(x=>x.ITEM_GID == olrc.ITEM_GID);// 数据量小时使用
Eq: 当集合是來自不确定个数的IEnumerable<T>时,请使用 Any().
当集合是來自外部数据 (ex: LINQto SQL, LINQ to Entities) 时,请使用 Any().
当集合是來自 .NET Framework 內建的集合时,请使用 Count() .
Eq: yield return:向枚举器返回值,按需供给,数据不是一次性加载到内存,而是希望获取 一个给一个。
yield breadk; 迭代结束
Eq: SELECT * FROM dbo.Table1 A(NOLOCK)
CROSS APPLY dbo.fnpbConvertStringToTable(A.sList,',') B
ORDER BY A.ID