2016-05-17 35 views
0

解釋我有一個LINQ查詢我不是100%肯定的,有人可以解釋它用簡單的英語發生了什麼Linq查詢用簡單的英語

var duplicates = this.BedStays 
        .GroupBy(i => new { i.PatientClassificationCode, i.BedBandCode, i.BedLevelAddOnInd, i.ServiceCodeTypeCode, i.ServiceCode, i.DayRate }) 
        .Where(g => g.Count() > 1) 
        .Select(g => g.Key).ToList(); 
+0

感謝您對編輯 – user2127

回答

0

有人可以用簡單的英語解釋什麼正在發生

查詢主要是通過在PatientClassificationCode, BedBandCode, BedLevelAddOnInd, ServiceCodeTypeCode, ServiceCode, DayRate字段上進行分組來列出BedStays集合中的所有重複項。

+0

感謝大家,這就是我的想法,但從來沒有見過一個LINQ查詢構建這樣 – user2127

+0

通常這是一個尋找重複的,類似於SQL :-) –

1
var duplicates = this.BedStays 

...將此屬性名爲「BedStays」的屬性分配給一個名爲「duplicates」的變量。

.GroupBy(

...由一組具體特性分組...

i => 

稱爲單BedStay「我」(可能反而把它稱爲「aBedStay」或「bedStay」,但筆者去與「我」)......

new { i.PatientClassificationCode, i.BedBandCode, i.BedLevelAddOnInd, i.ServiceCodeTypeCode, i.ServiceCode, i.DayRate }) 

...創建一個新的對象由第一構件進行排序(第一,然後通過第二,等等等等)...

.Where(g => g.Count() > 1) 

...只有採摘bedStay分組,其中至少還有一個匹配成員(我相信這是不必要的,因爲所有的分組,根據定義,將只存在,如果從至少一個分組的定義)...

.Select(g => g.Key).ToList(); 

......最後我們只關心關鍵字,這是我們在新建{i.Property,i.Property,i.Property}對象時定義的分組。我們把它列入清單。

+0

多個匹配的成員方法.. > 1 –

2

它會給你具有相同

  • PatientClassificationCode所有重複行
  • BedBandCode
  • BedLevelAddOnInd
  • ServiceCodeTypeCode
  • ServiceCode
  • DayRate

它通過將具有相同條件的行分組在一起,然後僅顯示具有多行(即重複)的組來完成此操作。