我正在尝试返回GroupBy中的值列表,或者甚至只返回GroupBy中的值的唯一ID,但不太明白如何。
这是我到目前为止所拥有的
var adjustmentsToDelete = adjustments.GroupBy(x => new {x.QueryId, x.FeeTypeId})
.Where(group => group.Count() > 1).ToList();
我有一个客户提出查询时对订单进行调整的表格。因此,我想通过QueryId和FeeTypeId对调整进行分组,并返回所有分组记录或至少每个分组记录的唯一ID(adjustmentId)。
感谢任何帮助,
谢谢:)
答案 0 :(得分:0)
您将收到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
}
}
答案 1 :(得分:0)
尝试以下操作并选择您想要的字段。
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
}
}
如果您想选择任何单个字段而不是尝试此字段。
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.
}
答案 2 :(得分:0)
var adjustmentsToDelete = adjustments.GroupBy(x => new {x.QueryId, x.FeeTypeId})
.Where(group => group.Count() > 1);
你的LINQ没问题。您可以设置条件和分组但不能获得结果。
如果您将此视为sql语句,则表示您尚未编写select
部分
在select
LINQ
声明
.Where(group => group.Count() > 1)
.Select(x => new {x.Key.QueryId, x.Key.FeeTypeId}).ToList();