使用Linq按顺序查询除一条记录外

时间:2014-11-24 06:09:40

标签: linq

我的数据库中有一个表包含一组名称。我需要按条件使用顺序按字母顺序对名称进行排序,但如果用户名是Say' John',则应在列表顶部打印一个名称。我有一个SQL查询,但是 我如何在linq中使用以下查询?

SELECT name
FROM names
ORDER BY
  CASE WHEN name = 'John' THEN 0 ELSE 1 END,
name

3 个答案:

答案 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();