如何 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();
我正在尝试 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();