您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

分享一些高效的LINQ语句代码

2024/3/19 0:33:51发布25次查看
model层的类如下:public class order     {         public int id { get; set; }         public decimal amount { get; set; }         public string customername { get; set; }         public string status { get; set; }     }
public  class person     {         public string name { get; set; }         public int age { get; set; }     }
program.cs代码如下: class program     {         //autoresetevent 允许线程通过发信号互相通信。通常,此通信涉及线程需要独占访问的资源。         //线程通过调用 autoresetevent 上的 waitone 来等待信号。如果 autoresetevent 处于非终止状态,则该线程阻塞,并等待当前控制资源的线程,通过调用 set 发出资源可用的信号。         //调用 set 向 autoresetevent 发信号以释放等待线程。autoresetevent 将保持终止状态,直到一个正在等待的线程被释放,然后自动返回非终止状态。如果没有任何线程在等待,则状态将无限期地保持为终止状态。         //可以通过将一个布尔值传递给构造函数来控制 autoresetevent 的初始状态,如果初始状态为终止状态,则为 true;否则为 false。         //通俗的来讲只有等myreseteven.set()成功运行后,myreseteven.waitone()才能够获得运行机会;set是发信号,waitone是等待信号,只有发了信号,等待的才会执行。如果不发的话,waitone后面的程序就永远不会执行。         private static autoresetevent autoset = new autoresetevent(false);         private static list<person> list = new list<person>()         {             new person() {name = rose, age = 19},             new person() {name = steve, age = 45},             new person() {name = jessica, age = 20},         };         private static void main(string[] args)         {             //checkorders();             //common();             //removefromlist();             //exceptionhandling();             //-----------------------------------------------------------------             //--------------------------------模拟非线程安全----------------------------             thread t1 = new thread(() =>             {                 //确保等待t2开始之后才运行下面的代码                 autoset.waitone();                 foreach (var item in list)                 {                     console.writeline(t1: + item.name);                     thread.sleep(1000);                 }             });             t1.start();             thread t2 = new thread(() =>             {                 //通知t1可以执行代码                 autoset.set();                 //沉睡1秒是为了确保删除操作在t1的迭代过程中                 thread.sleep(1000);                 list.removeat(2);             });             t2.start();             console.readkey();         }         public static void checkorders()         {             list<order> orders = new list<order>()             {                 new order { id = 123, amount = 29.95m, customername = mark, status = delivered },                 new order { id = 456, amount = 45.00m, customername = steph, status = refunded },                 new order { id = 768, amount = 32.50m, customername = claire, status = delivered },             };             bool anyrefunded = orders.any(o => o.status == refunded);             if (anyrefunded)             {                 console.writeline(there are refunded orders);             }             else             {                 console.writeline(no refunds);             }             bool alldelivered = orders.all(o => o.status == delivered);             if (alldelivered)             {                 console.writeline(everything was delivered);             }             else             {                 console.writeline(not everything was delivered);             }         }         public static void common()         {             //距离圣诞节的天数             var daystochristmas = (new datetime(datetime.today.year, 12, 25) - datetime.today).totaldays;             console.writeline(daystochristmas);             //-----------------------------------------------------------------             int sum = 10,5,0,8,10,1,4,0,10,1                 .split(',')                 .select(int.parse)                 .orderby(n => n)                 .skip(3)                 .sum();             console.writeline(sum);             //-----------------------------------------------------------------             var customers = new[] {                 new { name = annie, email = annie@test.com },                 new { name = ben, email =  },                 new { name = lily, email = lily@test.com },                 new { name = joel, email = joel@test.com },                 new { name = sam, email =  },             };             foreach (var customer in                 from c in customers                 where !string.isnullorempty(c.email)                 select c)             {                 console.writeline(sending email to {0}, customer.name);             }             //效果同上             foreach (var customer in customers.where(c => !string.isnullorempty(c.email)))             {                 console.writeline(sending email to {0}, customer.name);             }         }         public static void removefromlist()         {             func<list<string>> makelist = () => enumerable.range(1, 10000000).select(n => (item  + n + )).tolist();             var itemstoremove = new[] { item 0, item 1, item 50, item 1000, item 999999, item 9999999 };             var stopwatch = new stopwatch();             var list = makelist();             stopwatch.start();             foreach (var item in itemstoremove)             {                 list.remove(item);             }             stopwatch.stop();             console.writeline(list.count + foreach took {0}ms, stopwatch.elapsedmilliseconds);             list = makelist();             stopwatch.restart();             var newlist = list.except(itemstoremove).tolist(); //效率极低             stopwatch.stop();             console.writeline(newlist.count + except took {0}ms, stopwatch.elapsedmilliseconds);         }         public static void exceptionhandling()         {             var numbers = enumerable.range(1, 10)                     .select(n => 5 - n)                     .select(n =>                     {                         try                         {                             return 10 / n;                         }                         catch (exception e)                         {                             console.writeline(error in lambda:  + e.message);                             return -1;                         }                     });             foreach (var n in numbers)             {                 console.writeline(n);             }         }     }
以上就是分享一些高效的linq语句代码的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product