2011-08-30 31 views
0

我有一個LINQ從SQL查詢返回排序的行。 例如,它會返回:1 1 1 1 1 1 1 1 2 2 2 3 3 3 3 3 4 4 4 4 我正在尋找一種方法告訴LINQ切割&粘貼所有的1,並將其放置在3的,所以它會看起來2 2 2 3 3 3 3 3 1 1 1 1 1 1 1 4 4 4 4。如何重定位Linq行與邏輯

什麼是最有效的方法來重新定位它的指針? (不選擇&刪除&複製)

感謝

+0

你必須不那麼具體地說你的問題(即,一般說明你想要達到的目標)。 – jason

+0

我想採取某些行(回答特定查詢)並將它們重新放置在數據集中 – Himberjack

+0

什麼標識要移動的行?你如何指定你想要搬遷的地方? – jason

回答

5

嘗試

query.OrderBy(x => x == 1 : 3.5 ? (float)x); 
+0

什麼是3.5 for? – Himberjack

+0

的值介於3和4之間,因此,1會陷入3和4之間 – Jimmy

+0

@Himberjack只是爲了調整值「1」的訂單權重;您可以選擇大於3但小於4的任何值,否則不會影響整體訂單。 –

2

試試這個:

var list = <YourLinqQuery>.ToList(); 
var sortedList = list.OrderBy(a=> (a==1)? 3.5:a); 
+0

3.5,額外括號。 – Jimmy

+0

@Jimmy:修正它.Thx .. – Chandu

1

我會做的LINQ到SQL查詢,像這樣:

var query = from x in context.Table 
      let Order = x.RowNum == 1 ? 3.5 : x.RowNum 
      orderby Order 
      select x; 
+0

什麼是3.5 for? – Himberjack

+1

@Himberjack - 3.5用於排序,你希望1記錄出現在3之後,但在4之前。你可以使用3-4之間的任何數字,我選擇3.5 – Aducci