C# 关于Linq延迟查询

 demo:

 int Count = 0;

 string[] obj = { "item1", "item2", "item3", "item4", "item5", "item6" };

 var query = obj.Where(item => IsTrue(item));

 // 第一次遍历
 foreach (var item in query)
 {
     Console.WriteLine(item);
 }
 Console.WriteLine();

 // 第二次遍历
 query.ToList(); //ToList() 会导致遍历整个查询

 // 第三次遍历
 if (query.Any()) // Any() 也会导致遍历,找到则返回
 {
     Console.WriteLine("At least one item is true.\r\n");
 }
 if (query.Count() > 0)//Count() 会全部遍历
 {
     Console.WriteLine("Count > 0");

 }
 bool IsTrue(string item)
 {
     Count++;
     Console.WriteLine($"IsTrue is called:{Count},{Count % 2 == 0}---------{item}");
     return Count % 2 == 0; // 示例中总是返回true
 }

结果

IsTrue is called:1,False---------item1
IsTrue is called:2,True---------item2
item2
IsTrue is called:3,False---------item3
IsTrue is called:4,True---------item4
item4
IsTrue is called:5,False---------item5
IsTrue is called:6,True---------item6
item6

IsTrue is called:7,False---------item1
IsTrue is called:8,True---------item2
IsTrue is called:9,False---------item3
IsTrue is called:10,True---------item4
IsTrue is called:11,False---------item5
IsTrue is called:12,True---------item6
IsTrue is called:13,False---------item1
IsTrue is called:14,True---------item2
At least one item is true.

IsTrue is called:15,False---------item1
IsTrue is called:16,True---------item2
IsTrue is called:17,False---------item3
IsTrue is called:18,True---------item4
IsTrue is called:19,False---------item5
IsTrue is called:20,True---------item6
Count > 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值