我在我的數據庫中有一個包含一組名稱的表。我需要按條件使用order來按字母順序排列名稱,除了如果用戶名是Say'John',應該在列表頂部打印一個名稱。我有一個SQL查詢,但 我如何在linq中使用下面的查詢?使用Linq按順序查詢除一條記錄外
SELECT name
FROM names
ORDER BY
CASE WHEN name = 'John' THEN 0 ELSE 1 END,
name
我在我的數據庫中有一個包含一組名稱的表。我需要按條件使用order來按字母順序排列名稱,除了如果用戶名是Say'John',應該在列表頂部打印一個名稱。我有一個SQL查詢,但 我如何在linq中使用下面的查詢?使用Linq按順序查詢除一條記錄外
SELECT name
FROM names
ORDER BY
CASE WHEN name = 'John' THEN 0 ELSE 1 END,
name
試試這個: -
var result = db.names.Where(x => x.Name == "John")
.Concat(db.names.Where(x => x.Name != "John")
.OrderBy(x => x.Name)).ToList();
謝謝Rahul它的工作。 – 2014-11-24 07:01:27
,你可以做以下
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);
希望這將幫助你
感謝哈迪,我會以這種方式檢查它。 – 2014-11-24 06:29:40
你也可以這樣來做:
var result =
db.names
.ToArray()
.OrderBy(x => (x.Name == "John" ? "0" : "1") + x.Name)
.ToArray()
不錯的@Enigmativity +1 :)我認爲它只會做1循環迭代。不是嗎?? – 2014-11-24 06:57:17
@Enigmativity謝謝 – 2014-11-24 07:02:10
@RahulSingh - 實際上,是的。儘管'OrderBy'可能是O(nlogn)。 – Enigmativity 2014-11-24 12:06:11
你可以通過獲得沒有jhon排序的聯合加入的結果並結合列表來實現這一點 – Monah 2014-11-24 06:14:18