我使用 System.Linq.Dynamic 订购项目列表。
items = items.AsQueryable().OrderBy("Name ASC");
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,小写名称在大写名称之后排序,因此返回的项目是这样的。
Ape
Cat
Dog
alligator
ant
beetle
Run Code Online (Sandbox Code Playgroud)
我期望这个顺序:
alligator
ant
Ape
beetle
Cat
Dog
Run Code Online (Sandbox Code Playgroud)
有没有办法得到正确的顺序?检查了 OrderBy 的所有方法签名并用谷歌搜索,但 nada。
我正在使用Linq来实现sql和Linq动态 OrderBy.
我知道linq dynamic可以像 - orderby("column_name")那样进行简单的排序.
但它是否支持更复杂的东西,比如"CASE WHEN"中的查询?
string orderbyQuery = "(CASE WHEN (username == 100) THEN 1 ELSE 0 END) DESC)";
Run Code Online (Sandbox Code Playgroud)
这是我的查询:
var u = from u in db.users
orderby(orderbyQuery)
select u;
Run Code Online (Sandbox Code Playgroud)
上面的例子不起作用!,任何想法,如果它可能吗?还有其他办法吗?
谢谢
我只是想知道将某些项目放在列表顶部的列表中的最佳方法.此模型用于显示搜索结果的视图,并作为一个来自控制器List<T>.所以我的目标是显示所有项目,但具有特定属性的项目将转到列表的开头,以便首先显示它们.
所以我的控制器将是这样的:
List<Item> listFromRepository = repository.GetSearchResults();
List<Item> topItems = listFromRepository
.Where(x => x.Subject == 5) // any filter for items to be at top of search results
List<Item> listForView = new List<Item>();
listForView.AddRange(topItems);
listForView.AddRange(listFromRepository.Exclude(x => x.Subject == 5));
return Json(listForView);
Run Code Online (Sandbox Code Playgroud)