C# 在iQueryable列表上使用Foreach查找第二个列表中的值

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)

我创建了一个iQueryable集合,其中包含一个查询,如下所示-

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检查查找结果以检查是否存在。请欣赏这两条评论。谢谢你,现在我还得继续问下去