1、将非泛型转换为泛型的方法:
ArrayList lists =new ArrayList();
IEnumberable<T> myTEnum= lists .OfType<T>();
ArrayList lists = new ArrayList();
lists.AddRange(new object[]{1,"a",new object(),false});
IEnumerable<int> myInts=lists.OfType<int>();
foreach(int i in myInts)
{
Console.Write(i.ToString());
}
Console.ReadLine();
2、怎样延缓执行
var subset=from c in myCars where c.speed>5 select c;
使用Sequence的ToArray<>()方法和ToList<>()方法可以提取集合的固定数据副本。
3、Sequence类的 Reverse<>()方法
var subset=(from c in myCars select c).Reverse<Car>();
将IEnumrable的值逆转循环
4、Sequence类的Distinct<T>()方法,用于排除重复对象
5、获取子集的特殊形式
var subset=from c in mycars select new{c.Make,c.color};
6、建立查询表达式的方式,探索Linq底层原理
1、Sequnce和Lambda
int[] sStrs = new int[] { 1, 2, 3, 4, 5, 6 };
var subset=sStr.Where(g=>g>1).OrderBy(g=>g).Select(g=>g);
2、Sequence和匿名方法建立
//使用匿名方法建立Fun<>代理
int[] sStrs = new int[] { 1, 2, 3, 4, 5, 6 };
Func<string, bool> searchFilter = delegate(string g) { return g > 1; };
Func<string, string> itemToProcess = delegate(string s) { return s; };
var subset = sStrs.Where(searchFilter).OrderBy(itemToProcess).Select(itemToProcess);
3、Sequnce和原始代理
//代理目标
public static bool Filter(string s) { return s.Length > 1; }
public static string ProcessItem(string s) { return s; }
private void AnonymousOriginal()
{
int[] sStrs = new int[] { 1, 2, 3, 4, 5, 6 };
//Fun<>代理
Func<string, bool> searchFilter = new Func<string, bool>(Filter);
Func<string, string> itemProcess = new Func<string, string>(ProcessItem);
var subset = sStrs.Where(searchFilter).GroupBy(itemProcess).Select(itemProcess);
}
7、 foreach(var car in from c in sStrs select c)
8、特性 Table Column
[Table(name="tab")] public string sT;
[Column(id=true)] public int id;
9、生成Linq类的工具 sqlmetal.exe