我的数据库中有一个表包含一组名称。我需要按条件使用顺序按字母顺序对名称进行排序,但如果用户名是Say' John',则应在列表顶部打印一个名称。我有一个SQL查询,但是 我如何在linq中使用以下查询?
SELECT name
FROM names
ORDER BY
CASE WHEN name = 'John' THEN 0 ELSE 1 END,
name
答案 0 :(得分:2)
你也可以这样做:
var result =
db.names
.ToArray()
.OrderBy(x => (x.Name == "John" ? "0" : "1") + x.Name)
.ToArray()
答案 1 :(得分:1)
您可以执行以下操作
var listWithoutJohn=db.names.Where(t=>t.name!="John").OrderBy(t=>t.name).ToArray();
var johnList=db.names.Where(t=>t.name=="John").ToList();
var result=johnList.AddRange(listWithoutJohn);
希望这会对你有所帮助
答案 2 :(得分:1)
试试这个: -
var result = db.names.Where(x => x.Name == "John")
.Concat(db.names.Where(x => x.Name != "John")
.OrderBy(x => x.Name)).ToList();