0

我正在做一些 LINQ 来查找在文本框中键入的关键字。每个关键字都以“;”结尾 我需要寻找至少包含其中一个键的项目。

我以为我可以通过这个循环来实现这一点

IEnumerable<ItemFAQ> allResults = null;
                    foreach (var item in termosPesquisaIsolados)
                    {
                        IEnumerable<ItemFAQ> tempResults = 
                                _dbHelpDesk.ItemFAQ
                                    .Where(x => x.DescricaoResposta.Contains(item) || x.TituloTopico.Contains(item))
                                    .ToList()
                                    .Select(x => new ItemFAQ
                                    {
                                        IdPergunta = x.IdPergunta,
                                        TituloTopico = x.TituloTopico,
                                        DescricaoResposta = x.DescricaoResposta.Substring(0, 100)
                                    });

                        if (allResults != null)
                            allResults = allResults.Union(tempResults);
                        else
                            allResults = tempResults;
                    }

在第一次迭代 tempResult 在测试中返回 3 个元素,然后它传递给 allResult,一切正常。

第二次迭代,tempResult 返回 2 次......然后根据代码 allResult 应该接收 AllResult 和 TempResults 的联合,但无论我做什么,当我使用联合子句时,结果都是空集中的。

所以 3 + 2 = 0 在使用 Union 后结束。

你们是否可以在这种平静的代码中看到错误或知道一些可能导致此错误的问题?

谢谢你的时间。

4

1 回答 1

0

尝试替换这一行:

allResults = allResults.Union(tempResults);

和:

allResults = allResults.Union(tempResults).ToList();
于 2012-12-20T18:30:29.400 回答