Linq查询用简单的英语解释

时间:2016-05-17 03:25:17

标签: c# linq

我有一个Linq查询我不是100%肯定,有人可以用简单的英语解释它发生了什么

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();

3 个答案:

答案 0 :(得分:2)

它将为您提供具有相同

的所有重复行
  • PatientClassificationCode
  • BedBandCode
  • BedLevelAddOnInd
  • ServiceCodeTypeCode
  • ServiceCode
  • DayRate

它通过将具有相同条件的行分组在一起,然后仅显示具有多个行的组(即重复项)来实现此目的。

答案 1 :(得分:1)

var duplicates = this.BedStays

...分配给名为"复制的"来自这个名为" BedStays的一个属性。"

.GroupBy(

......按一组特定的特征分组......

i =>

称为单一的BedStay"我" (原本可以打电话给#34; aBedStay"或者#34; bedStay"但是作者带着"我")......

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

...创建一个要排序的新对象(首先是第一个成员,然后是第二个成员,依此类推等等)......

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

...只选择至少有一个匹配成员的bedStay分组(我认为这是不必要的,因为根据定义,只有来自至少一个分组定义的所有分组才会存在)... < / p>

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

...最后我们只关心密钥,这是我们在新建{i.Property,i.Property,i.Property}对象时定义的分组。我们把它列为一个列表。

答案 2 :(得分:0)

  

有人可以用简单的英语解释发生了什么

查询主要通过对BedStays字段进行分组来列出PatientClassificationCode, BedBandCode, BedLevelAddOnInd, ServiceCodeTypeCode, ServiceCode, DayRate集合中的所有重复项。