2017-04-04 124 views
0

我試圖從基於項目的數量的表格中一列訂購LINQ

| OrderID | DateOrdered | EnteredById | OtherData | OtherData2 | 
----------------------------------------------------------------------- 
| 1  | 2/2/2017 |  3  | asdf  |  sadfsf | 
| 2  | 2/2/2017 |  4  | asdf  |  sadfsf | 
| 3  | 2/3/2017 |  4  | asdf  |  sadfsf | 
| 4  | 2/4/2017 |  3  | asdf  |  sadfsf | 
| 5  | 2/4/2017 |  4  | asdf  |  sadfsf | 
| 6  | 2/6/2017 |  5  | asdf  |  sadfsf | 

這是一個C#項目篩選和排序數據條目的數量,有一個工作模式設置對於表(訂單) 我需要使用Linq與實體返回一個對象數組,整個行,按每個EnteredById輸入的命令數量排序,並且只有當那個EnteredById有多個條目時。

最後,它應該是:

| OrderID | DateOrdered | EnteredById | OtherData | OtherData2 | ----------------------------------------------------------------------- | 2 | 2/2/2017 | 4 | asdf | sadfsf | | 3 | 2/3/2017 | 4 | asdf | sadfsf | | 5 | 2/4/2017 | 4 | asdf | sadfsf | | 4 | 2/4/2017 | 3 | asdf | sadfsf | | 1 | 2/2/2017 | 3 | asdf | sadfsf |

我寫的代碼是一個絕對的混亂,所以我沒有在這裏張貼。有人有祕密的Linq答案嗎?

+1

在LINQ你可以做'.OrderBy()。ThenBy()' – JaredStroeb

+0

我想我誤解了這個問題重讀這聽起來像你真正想要得到的是共享EnteredById使用的行(訂單)的計數後,計數過濾出不是重複客戶所做的訂單(count> 1),然後通過EnteredById然後訂購剩餘的行(訂單)OrderId。那是對的嗎? – JaredStroeb

+0

@cholisky你找到答案 – Sajeetharan

回答

2
var result = objListOrder.GroupBy(o=>o.EnteredById).Where((x,groupid)=> x.Count()>1).SelectMany((x,groupid)=>x).OrderBy(o=>o.EnteredById); 
+1

@nabren感謝編輯 – Sajeetharan

+0

是的!抱歉,花了一些時間才弄清楚,誤解了最初的要求。 – Nabren

+0

其實它需要按EnteredById的數量來排序 - 例如。如果EnteredById:6輸入了5個訂單,那麼這5個訂單將位於列表的頂部,EnteredById:4輸入3個訂單,這3個訂單將是下一個,並且EnteredById:3輸入兩個訂單,這些訂單是最後一個訂單 – cholisky