如何 return GroupBy 值列表

How to return a list of GroupBy values

我正在尝试 return GroupBy 中的值列表,甚至只是 GroupBy 中那些值的唯一 ID,但不太了解如何操作。

这是我目前所拥有的

var adjustmentsToDelete = adjustments.GroupBy(x => new {x.QueryId, x.FeeTypeId})
                         .Where(group => group.Count() > 1).ToList();

我有一个 table 的调整是在客户提出查询时对订单进行的。因此,为此我想按 QueryId 和 FeeTypeId 以及 return 所有分组记录或至少每个分组记录的唯一 ID (adjustmentId) 对调整进行分组。

感谢任何帮助,

谢谢:)

您正在返回 IGrouping<TKey, TElement> 的可枚举数。

您可以像这样枚举结果:

foreach ( var group in adjustmantsToDelete )
{
    //access group key
    Debug.WriteLine(group.Key.QueryId);
    Debug.WriteLine(group.Key.FeeTypeId);

    //enumerate items in the group
    foreach ( item in group ) 
    {
         //item's type is the same as the 
         //source collection item type
    } 
} 

按以下方法尝试并 select 个您想要的字段。

var adjustmentsToDelete = adjustments.GroupBy(x => new {x.QueryId, x.FeeTypeId})
                                  .Where(group => group.Count() > 1)
                                  .Select(x => new {x.Key.QueryId, x.Key.FeeTypeId}).ToList();

您可以针对多个字段重复上述结果,如下所示。

foreach(var item in adjustmentsToDelete)
{
    foreach(var item in adjustmentsToDelete.QueryId)
    {
        //Use QueryId
    }

    foreach(var item in adjustmentsToDelete.FeeTypeId)
    {
        //Use FeeTypeId 
    }
}

如果你想 select 任何一个字段而不是试试这个。

var adjustmentsToDelete = adjustments.GroupBy(x => new {x.QueryId, x.FeeTypeId})
                                  .Where(group => group.Count() > 1)
                                  .Select(x => new {x.Key.QueryId}).ToList();

然后将您的结果用于单个字段。

foreach(var item in adjustmentsToDelete)
{
    //use this item object as per it's properties.
}
var adjustmentsToDelete = adjustments.GroupBy(x => new {x.QueryId, x.FeeTypeId})
                                  .Where(group => group.Count() > 1);

你的LINQ没有问题。您可以设置条件和分组但不能得到结果。

如果你认为这是一个sql语句,你还没有写select部分

LINQ

上添加 select 声明
   .Where(group => group.Count() > 1)
   .Select(x => new {x.Key.QueryId, x.Key.FeeTypeId}).ToList();