コード例 #1
0
        // GET: Articles
        public ActionResult Index(string sort,string filter)
        {
            var query = db.Articles.AsQueryable();  //データソース
            // filter
            if(!string.IsNullOrEmpty(filter)) {
                query = query.Where(a => a.Title.Contains(filter) || a.Description.Contains(filter));
            }

            Article article = null;
            SortDefinition<Article> sort_def = new SortDefinition<Article>() {
                Fields = new[] {   //ソート列定義
                    article.DefineSort(a=>a.Url),
                    article.DefineSort(a=>a.Title),
                    article.DefineSort(a=>a.Description),
                    article.DefineSort(a=>a.Viewcount),
                    article.DefineSort(a=>a.Published),
                    article.DefineSort(a=>a.Released),
                },
                SortKey=sort
            };

            query=sort_def.AddOrderBy(query);

            ViewBag.SortDef = sort_def;     //リンク作成用にソート定義を渡す
            ViewBag.InputedFilter = filter; //入力されたフィルター
            return View(query.ToList());    //ソート済み結果をViewに返す。
        }
コード例 #2
0
        public void SortDefinition_Test1()
        {
            var data = this.TestData1(10);
            Article article = null;
            SortDefinition<Article> sort_def = new SortDefinition<Article>() {
                Fields=new[]{   //ソート列定義
                    article.DefineSort(a=>a.Title),
                    article.DefineSort(a=>a.Viewcount),
                    article.DefineSort(a=>a.Published)
                },
                SortKey = "Title"   //ソート対象
            };
            data= sort_def.AddOrderBy(data); //かつてループだったところ

            var result = data.ToArray();
            for (var i = 0; i < 10; i++) {
                Assert.AreEqual(i, result[i].Viewcount);
            }
        }