在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
该关键字主要用在非泛型到泛型之间的转化,在有些场合还是很有用的;比如:在使用非泛型的时候,想使用LINQ表达式进行结果查询 如:声明非泛型集合 System.Collections.ArrayList fruits = new System.Collections.ArrayList(5); fruits.Add(32); 若我们想得到含有“n”字母的水果,则使用如下方式 现将fruits转化为兼容 IEnumerable<T>的类型 var query = fruits.OfType<string>(); //只取出满足 string 的对象; 在使用LINQ表达式即可完成目的: var result= from c in query where c.contain("n") select c; 今天突然在书上看到该关键字,感觉很有用就随笔记录下来了,仅供参考; void Main() { //請注意:ArrayList 並未實做 IEnumerable<T>,所以不能應用 LINQ ArrayList ary = new ArrayList(); //加入三個顧客資料 ary.Add(new Customer {Id = 1, Name = "Leo", Age = 36}); ary.Add(new Customer {Id = 2, Name = "Rose", Age = 28}); ary.Add(new Customer {Id = 3, Name = "Alvin", Age = 2}); //加入三個顧客的訂單資料 ary.Add(new Order {CustomerId = 3, OrderDate = new DateTime(2011, 10, 9), Total = 2940}); ary.Add(new Order {CustomerId = 2, OrderDate = new DateTime(2012, 10, 10), Total = 3849}); ary.Add(new Order {CustomerId = 1, OrderDate = new DateTime(2011, 12, 1), Total = 500}); ary.Add(new Order {CustomerId = 1, OrderDate = new DateTime(2012, 2, 28), Total = 1234}); ary.Add(new Order {CustomerId = 2, OrderDate = new DateTime(2012, 5, 20), Total = 9520}); //透過 OfType 過濾出訂單資料,並用 Where 條件查出小於千元的訂單 var queryOrder = from e in ary.OfType<Order>() where e.Total < 1000 select e; foreach (var e in queryOrder) { Console.WriteLine(e.ToString()); } } //顧客基本資料類別 public class Customer { public int Id {get; set;} public string Name {get; set;} public int Age { get; set; } public override string ToString() { return string.Format("Id = {0}, Name = {1}, Age = {2}", Id, Name, Age); } } //訂單基本資料類別 public class Order { public int CustomerId { get; set; } public DateTime OrderDate { get; set; } public double Total { get; set; } public override string ToString() { return string.Format("CustomerId = {0}, OrderDate = {1}, Total = {2}", CustomerId, OrderDate, Total); } } //輸出: //CustomerId = 1, OrderDate = 2011/12/1 上午 12:00:00, Total = 500
该关键字主要用在非泛型到泛型之间的转化,在有些场合还是很有用的;比如:在使用非泛型的时候,想使用LINQ表达式进行结果查询 如:声明非泛型集合 System.Collections.ArrayList fruits = new System.Collections.ArrayList(5); fruits.Add(32); 若我们想得到含有“n”字母的水果,则使用如下方式 现将fruits转化为兼容 IEnumerable<T>的类型 var query = fruits.OfType<string>(); //只取出满足 string 的对象; 在使用LINQ表达式即可完成目的: var result= from c in query where c.contain("n") select c; 今天突然在书上看到该关键字,感觉很有用就随笔记录下来了,仅供参考; void Main() { //請注意:ArrayList 並未實做 IEnumerable<T>,所以不能應用 LINQ ArrayList ary = new ArrayList(); //加入三個顧客資料 ary.Add(new Customer {Id = 1, Name = "Leo", Age = 36}); ary.Add(new Customer {Id = 2, Name = "Rose", Age = 28}); ary.Add(new Customer {Id = 3, Name = "Alvin", Age = 2}); //加入三個顧客的訂單資料 ary.Add(new Order {CustomerId = 3, OrderDate = new DateTime(2011, 10, 9), Total = 2940}); ary.Add(new Order {CustomerId = 2, OrderDate = new DateTime(2012, 10, 10), Total = 3849}); ary.Add(new Order {CustomerId = 1, OrderDate = new DateTime(2011, 12, 1), Total = 500}); ary.Add(new Order {CustomerId = 1, OrderDate = new DateTime(2012, 2, 28), Total = 1234}); ary.Add(new Order {CustomerId = 2, OrderDate = new DateTime(2012, 5, 20), Total = 9520}); //透過 OfType 過濾出訂單資料,並用 Where 條件查出小於千元的訂單 var queryOrder = from e in ary.OfType<Order>() where e.Total < 1000 select e; foreach (var e in queryOrder) { Console.WriteLine(e.ToString()); } } //顧客基本資料類別 public class Customer { public int Id {get; set;} public string Name {get; set;} public int Age { get; set; } public override string ToString() { return string.Format("Id = {0}, Name = {1}, Age = {2}", Id, Name, Age); } } //訂單基本資料類別 public class Order { public int CustomerId { get; set; } public DateTime OrderDate { get; set; } public double Total { get; set; } public override string ToString() { return string.Format("CustomerId = {0}, OrderDate = {1}, Total = {2}", CustomerId, OrderDate, Total); } } //輸出: //CustomerId = 1, OrderDate = 2011/12/1 上午 12:00:00, Total = 500
|
请发表评论