0

我正在尝试将以下代码转换为LINQ

foreach (var item in pageHistorycol)
    {
        if (item.PageTitle.Contains(text) || item.PageURI.Contains(text))
        {
            tempHistory.Insert(0, item);
        }
    }

以下返回所有项目而不是匹配项

var matches = pageHistorycol.Where(item => 
    (item.PageTitle.Contains(text) || item.PageURI.Contains(text)));

我错过了什么?

4

1 回答 1

0

您显示的两个语句应该返回相同的项目。如果第二个返回所有项目,则 foreach 循环也应将所有项目添加到其中tempHistory

主要区别在于您的foreach循环将以与 LINQ 查询相反的顺序返回项目。如果匹配的顺序很重要,您可以使用以下命令以相同的顺序获取项目:

var matches = pageHistorycol
     .Where(item => item.PageTitle.Contains(text) || item.PageURI.Contains(text))
     .Reverse();
于 2013-05-21T19:14:32.807 回答