我需要根据不同的条件从单个列表中设置多个标签的值.这是我的代码:
List<RFPModel> lst = RFPModel.GetAll(); //ALL
if(lst.Count>0)
{
lblActive.InnerText = lst.Count(a => a.StatusID == (int)ProjectStatus.Project_Active).ToString();
lblCompleted.InnerText = lst.Count(a => a.StatusID == (int)ProjectStatus.Project_Completed).ToString();
lblProposal.InnerText = lst.Count(a => a.StatusID == (int)ProjectStatus.Proposal_UnderProcess).ToString();
lblProposalsRej.InnerText = lst.Count(a => a.StatusID == (int)ProjectStatus.Proposal_Rejected).ToString();
lblRFPRec.InnerText= lst.Count(a => a.StatusID == (int)ProjectStatus.RFP_Submitted).ToString();
lblRFPRef.InnerText= lst.Count(a => a.StatusID == (int)ProjectStatus.RFP_Rejected).ToString();
lblRFPApp.InnerText = lst.Count(a => a.StatusID == (int)ProjectStatus.RFP_Approved).ToString();
}
Run Code Online (Sandbox Code Playgroud)
我担心这种方法可能会影响性能,因为每当您需要遍历列表的值时.任何有关更好方法的建议都将受到高度赞赏.
如何从特定元素开始搜索类型列表中的元素?
我可以使用for循环实现相同的目的如下:
bool found = false;
for(int i=counter+1;i<=lstTags.Count()-1;i++)
{
if (lstTags[i].PlateFormID == plateFormID)
{
found = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否可以通过内置功能以更有效的方式完成,例如:
var nextItem=lstTags.FirstOrDefault(a=>a.PlateFormID==plateFormID, startIndex);
Run Code Online (Sandbox Code Playgroud)