2011-08-30 60 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