C# 在iQueryable列表上使用Foreach查找第二个列表中的值
我创建了一个iQueryable集合,其中包含一个查询,如下所示-C# 在iQueryable列表上使用Foreach查找第二个列表中的值,c#,linq,list,collections,foreach,C#,Linq,List,Collections,Foreach,我创建了一个iQueryable集合,其中包含一个查询,如下所示- var Results = DataClass.Links.OrderBy(mySel => mySel.Description) .Where(mySel => mySel.Report_Id.Equals(NumID)
var Results = DataClass.Links.OrderBy(mySel => mySel.Description)
.Where(mySel => mySel.Report_Id.Equals(NumID)
new Sections
{
SectID = mySel.Report_Section.SectID,
SectionDesn = mySel.Report_Section.ReportSectionDescription,
ReportPageTitle = mySel.tbl_Report.ReportPageTitle,
MyUrl = mySel.Link_Url
}).Distinct();
我还有第二个类型为list
的列表,名为LookForMe,定义为
var LookForMe = new List<string> { "increase", "abc", "tuesday", "another" };
我不知道如何编写if语句来查找当前迭代的值是否包含LookForMe列表中的任何值。有什么办法让我走上正轨吗?谢谢您的时间。您的支票应该是:
if(LookForMe.Contains(item.URL))
if(LookForMe.Any(r=> item.URL.Contains(r)))
如果列表LookForMe
中存在item.URL
,则返回true
但是如果您试图比较URL
中与列表中任何项目匹配的任何部分,那么您的检查应该是:
if(LookForMe.Contains(item.URL))
if(LookForMe.Any(r=> item.URL.Contains(r)))
你可以试试这个:
foreach (var item in Results)
{
if (LookForMe.Any(x=>item.URL.Contains(x))
{
// then do something
}
}
使用
Any
扩展方法,可以查看LookForMe
中是否存在任何世界,该世界包含在项.URL
中。如果是,则返回true。否则,它将返回false。如果要使用collection Contains方法,尤其是如果集合中有许多条目,则最好在定义LookForMe以生成“索引”查找时调用ToLookup,而不是基本上调用Contains时发生的扫描。然后对照null检查查找结果以检查是否存在。请欣赏这两条评论。谢谢你,现在我还得继续问下去