실제로 GroupBy 메서드의 오버로드 중 하나를 사용하여 별도의 Select를 사용할 필요가 없습니다. 'keySelector'및 'resultSelector'매개 변수를 사용하여 그룹과 합계를 결합 할 수 있습니다.
GroupBy는 처음 엔 꽤 힘든 방법 일 수 있습니다. 그러나 일단 머리를 숙이면 상당히 직선적이며 매우 다양합니다.
예를 들어, 결과가 집계 된 WorkOrderItems 목록을 각 그룹에 하나씩 생성합니다. 익명 객체 목록을 반환하는 것이 아닙니다. 당신은 Linq에에서 가장 저평가 된 방법 중 하나에 추가 읽기를 위해 ...
class Program
{
static void Main(string[] args)
{
var myItems = new List<WorkOrderItem>
{
new WorkOrderItem { OrderId = 1, ItemName = "A", ItemQuantity = 0 },
new WorkOrderItem { OrderId = 0, ItemName = "A", ItemQuantity = 1 },
new WorkOrderItem { OrderId = 0, ItemName = "A", ItemQuantity = 2 },
new WorkOrderItem { OrderId = 0, ItemName = "B", ItemQuantity = 3 },
new WorkOrderItem { OrderId = 0, ItemName = "B", ItemQuantity = 4 },
new WorkOrderItem { OrderId = 1, ItemName = "B", ItemQuantity = 5 },
new WorkOrderItem { OrderId = 0, ItemName = "C", ItemQuantity = 6 },
};
int myId = 0;
List<WorkOrderItem> groupedItems =
myItems.Where(i => i.OrderId == myId)
.GroupBy(
//key selector
i => i.ItemName,
//result selector
(name, items) =>
{
var aggregatedItem = new WorkOrderItem
{
OrderId = myId,
ItemName = name,
ItemQuantity = items.Sum(i => i.ItemQuantity)
};
return aggregatedItem;
})
.ToList();
}
class WorkOrderItem
{
public int OrderId { get; set; }
public string ItemName { get; set; }
public int ItemQuantity { get; set; }
}
}
여러 키 선택기 (GROUP BY 절)과이를 확장하고 합산하고, 결과 객체 (들)의 조작의 모든 방법을 할 수 Jon Skeet의 블로그 게시물을 살펴 보는 것이 좋습니다. http://codeblog.jonskeet.uk/2011/01/01/reimplementing-linq-to-objects-part-21-groupby/
무엇이 오류입니까? – Magnus
개체 참조가 개체의 인스턴스로 설정되지 않았습니다. 나는 이것이 쿼리가 값을 반환하지 않았다는 것을 의미한다고 생각할 것입니다. – user1287453
값을 반환하기 전에 오류가 발생했음을 의미합니다. – Magnus