0

私たちのウェブサイトへの検索機能の1つは、1ページで処理するには非常に多くの結果を返すので、ここで提供されるページング機能を追加しようとしています:https ://github.com/TroyGoode/PagedList

ソリューションは適切にビルドされ、ページも読み込まれますが、検索を実行しようとすると、ページのcontroller / Index()メソッドで「NotSupportedException」がスローされます。

The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must be called before the method 'Skip'.

Visual Studio 2010は、この例外がスローされたときにreturnステートメントを指します。ASP MVCで作業するのはこれが2日目なので、あらゆる提案を歓迎します。ありがとうございました!

            case "name":
                //if no comma, do a combined search  by last name and by corporate name.
                searchString = searchString.ToUpper();

                var lastAgents =
                    db.Agent.OrderBy(s => s.LastName).Where(s => s.LastName.ToUpper().StartsWith(searchString)).Include(
                        a => a.AgentIdentification).Include(a => a.SymetraNumberToAgentId);
                //end new code
                var corp2Agents =
                    db.Agent.OrderBy(s => s.CorporateName).Where(s => s.CorporateName.ToUpper().StartsWith(searchString)).Include(
                        a => a.AgentIdentification);
                if ((corp2Agents.Count() == 0) & (lastAgents.Count() == 0)) ViewBag.ErrorMessage = "None found in search for Last Names and Companies beginning with " + search1;
                else ViewBag.Message = "Results of Last Name and Company Name search.  Found " + (corp2Agents.Count() + lastAgents.Count()).ToString();

                pageNumber = (page ?? 1);
                return View(lastAgents.Union(corp2Agents).ToPagedList(pageNumber, pageSize));
4

2 に答える 2

0

永遠にかかりましたが、私は答えを見つけました。これらのステートメントは両方とも

                var lastAgents =
                    db.Agent.OrderBy(s => s.LastName).Where(s => s.LastName.ToUpper().StartsWith(searchString)).Include(
                        a => a.AgentIdentification).Include(a => a.SymetraNumberToAgentId);
                //end new code
                var corp2Agents =
                    db.Agent.OrderBy(s => s.CorporateName).Where(s => s.CorporateName.ToUpper().StartsWith(searchString)).Include(
                        a => a.AgentIdentification);

OrderByが含まれていますが、これはUnionステートメントでも必要です。最後の「return」ステートメントは次のとおりです。

return View((lastAgents.Union(corp2Agents)).OrderBy(s => s.sNumber).ToPagedList(pageNumber, pageSize));
于 2012-12-18T22:00:51.837 に答える
0

次のように、コントローラーに.OrderBy(s => s.sNumber)を追加してみてください。

var lastAgents =
                    db.Agent.Where(s => s.LastName.ToUpper().StartsWith(searchString)).Include(
                        a => a.AgentIdentification).Include(a => a.SymetraNumberToAgentId).OrderBy(s => s.sNumber);
                //end new code
                var corp2Agents =
                    db.Agent.Where(s => s.CorporateName.ToUpper().StartsWith(searchString)).Include(
                        a => a.AgentIdentification).OrderBy(s => s.CorporateName);
于 2013-06-10T14:38:44.820 に答える