C# 查找连续条目
我需要检查x个物体。每个对象都有(int)ID和(bool)Complete字段。ID字段将是唯一的。如何查找具有Complete==true和连续ID字段的对象。例如,我想查找满足此条件的任意3个连续对象:C# 查找连续条目,c#,.net,C#,.net,我需要检查x个物体。每个对象都有(int)ID和(bool)Complete字段。ID字段将是唯一的。如何查找具有Complete==true和连续ID字段的对象。例如,我想查找满足此条件的任意3个连续对象: object (ID=1, Complete=true) object (ID=2, Complete=true) object (ID=3, Complete=false) object (ID=4, Complete=true) object (ID=5, Complete=true)
object (ID=1, Complete=true)
object (ID=2, Complete=true)
object (ID=3, Complete=false)
object (ID=4, Complete=true)
object (ID=5, Complete=true)
object (ID=6, Complete=true)
在上面,我应该得到对象4、5、6。另一个例子:
object (ID=1, Complete=true)
object (ID=2, Complete=true)
object (ID=3, Complete=false)
object (ID=4, Complete=true)
object (ID=5, Complete=true)
object (ID=6, Complete=false)
在这种情况下,Complete==true的3个连续对象不存在。我认为C#中没有任何内置方法可以做到这一点,但这是一个简单的情况,即在对象上迭代,保留前两个值的历史记录。当prev_val_1==prev_val_2==curr_val时,将结果及其相应的ID打印出来。类似如下:
from obj in objects
let next = obj.FirstOrDefault(t => t.id > obj.id && t.Completed)
let nextNext = null == next ? null : objects.FirstOrDefault(t => t.id > next.id && t.Completed)
where obj.completed && next != null && nextNext !=null select obj.id, next.id, nextNext.id
var a=myList.Where((q,index)=>
q、 伊斯通&&
索引
如果您需要查找由三个值组成的序列,这是一个很好的解决方案,但如果您尝试扩展为4、5、6等连续值,它将很快失控。
var triplets = list.Select((item, index) => list.Skip(index).Take(3));
var candidates = triplets.Where(triplet => (triplet.Count() == 3) &&
(triplet.All(item => item.Complete)));
var a = myList.Where((q, index) =>
q.IsDone &&
index < myList.Count-2 &&
myList[index+1].IsDone &&
myList[index+2].IsDone);