0

テキストボックスに入力されたキーワードを探すためにLINQを実行しています。各キーワードは「;」で終わります そして、これらのキーの少なくとも 1 つを含む itens を探す必要があります。

このループでこれを達成できると思いました

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 に渡されます。これですべて問題ありません。

2 回目の反復では、tempResult は 2 つのオカレンスを返します... コードによると、allResult は AllResult と TempResults の Union を受け取る必要がありますが、何をしても、Union 句を使用すると結果が空のセットになります。

したがって、ユニオンを使用した後、最後に 3 + 2 = 0 になります。

このコードの平和で間違いを確認できますか、またはこのエラーにつながる可能性のあるいくつかの問題を知っていますか?

御時間ありがとうございます。

4

1 に答える 1

0

この行を置き換えてみてください:

allResults = allResults.Union(tempResults);

と:

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