2013-07-30 20 views
4

我正在做一個GroupBy Linq在IQueryable。但我想在連接的字符串上執行GroupBy。我現在是這樣的:在GroupBy中連接字符串

SomeList.GroupBy(x => x.Code + x.Location) 

這對我的作品,然而,這也改變了x.Code的連接字符串x.Code + x.Location

有沒有辦法在一個GroupBy暫時串聯變量,像:

SomeList.GroupBy(x => (x.Code + x.Location) as TempVar) 
+3

目前還不清楚你希望這個團隊的外觀如何。如果你能給我們提供樣本數據和預期的產出,那真的很有幫助。請注意,第一個版本將改變'x.Code'的斷言簡直是不真實的(除非你的屬性真的很奇怪),所以你可能希望重新訪問它。 –

+0

'x.Code'可以更改嗎?這對我來說有點奇怪,順便說一句,你怎麼知道它改變了?你在linq查詢中的任何地方使用它? –

+3

您確定'x.Code'已更改,您不只是查看'Grouping'對象的'Key'屬性?關鍵是兩個變量的連接,但這並不意味着您的原始對象已被修改。 – keyboardP

回答

2

分組由每個屬性單獨將導致同一個連鎖分組

SomeList.GroupBy(x => new {x.Code, x.Location}); 
+0

我有點好奇,'GroupBy'如何在沒有'new {x.Code,x.Location}'實現'IEqualityComparer'的情況下完成? –

+1

這是因爲我們使用的是匿名類型。匿名類型的'Equals'和'GetHashcode'方法由所有*屬性的'Equals'和'GetHashcode'方法組成。更多信息:http://msdn.microsoft.com/en-us/library/bb397696.aspx – NinjaNye

0

要回答你的具體問題

是否有辦法暫時連接在GroupBy變量...

someList.GroupBy(x => new { TempConcat = x.Code + x.Location }) 

但是我相信NinjaNye答案是你想要的東西更好,而不是你問什麼:)