我正在尝试将以下代码转换为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)));
我错过了什么?
答案 0 :(得分:0)
您显示的两个语句应返回相同的项目。如果第二个返回所有项目,则foreach循环也应将所有项目添加到tempHistory
。
主要区别在于您的foreach
循环将以与LINQ查询相反的顺序返回项目。如果匹配顺序很重要,您可以使用以下命令获取相同顺序的项目:
var matches = pageHistorycol
.Where(item => item.PageTitle.Contains(text) || item.PageURI.Contains(text))
.Reverse();