如何从特定索引到末尾在List中查找元素?

时间:2019-02-18 14:33:05

标签: c# linq

如何从特定元素开始在“类型列表”中搜索元素?

我可以使用下面的for循环实现相同的目的:

bool found = false;
for(int i=counter+1;i<=lstTags.Count()-1;i++)
   {
    if (lstTags[i].PlateFormID == plateFormID)
      {
        found = true;
        break;
       }
    }

但是,我想知道是否可以通过以下内置功能以更有效的方式完成此操作:

var nextItem=lstTags.FirstOrDefault(a=>a.PlateFormID==plateFormID, startIndex); 

2 个答案:

答案 0 :(得分:6)

您可以使用Enumerable.Skip

var nextItem = lstTags.Skip(startIndex).FirstOrDefault(a => a.PlateFormID == plateFormID);

这将过滤掉前startIndex个元素,然后在过滤的可枚举中找到第一个匹配的PlateFormID

答案 1 :(得分:2)

您可以使用Where((obj,index)=>yourLogic)

代码:

var nextItem=lstTags.Where((a,index) => a.PlateFormID==plateFormID && index > startIndex ).FirstOrDefault(); 

EX

var datas = new[] { "item1","item2","item3"};
var data = datas.Where((obj,index) => index>1 ).FirstOrDefault(); //item3

PS

  
      
  • 索引从0开始
  •