이것은 잠시 전에 게시 한 질문의 후속 조치입니다. 나는 대답을 얻었지만, 원래의 의도를 잃어 버린 지점까지 예제 수업을 단순화했다는 것을 깨달았습니다. 원래 질문에 대한 답변을 이미 수락 했으므로 다른 질문을 시작하는 것이 가장 좋습니다.각 범주에서 가장 높은 가격의 항목을 반환하는 LINQ 쿼리
그래서 여기 내 새로운 클래스의 :
public class Art
{
public string Type { get; set; }
public string Name { get; set; }
public int Price { get; set; }
}
... 여기 목록 작성입니다 : 내가 싶어하는 개체의 컬렉션, 각 유형에 대한 하나
public static void Example0000()
{
List<Art> art = new List<Art>();
art.Add(new Art() { Price = 45, Type = "painting", Name = "Still Life in Maryland" });
art.Add(new Art() { Price = 123, Type = "sculpture", Name = "Dying Sheep" });
art.Add(new Art() { Price = 12, Type = "icon", Name = "Perplexed Smiley" });
art.Add(new Art() { Price = 460, Type = "sculpture", Name = "Waves on Sand" });
art.Add(new Art() { Price = 2030, Type = "painting", Name = "Robert in the Morning" });
art.Add(new Art() { Price = 10, Type = "icon", Name = "Smiley Picking Nose" });
art.Add(new Art() { Price = 700, Type = "painting", Name = "Birds in Autumn" });
art.Add(new Art() { Price = 1400, Type = "sculpture", Name = "Holding Hands" });
art.Add(new Art() { Price = 46, Type = "painting", Name = "Reeling Him In" });
art.Add(new Art() { Price = 12000, Type = "sculpture", Name = "Old Dog" });
art.Add(new Art() { Price = 6, Type = "icon", Name = "Hiding Smiley" });
art.Add(new Art() { Price = 810, Type = "sculpture", Name = "Rhinestone Cowgirl" });
art.Add(new Art() { Price = 250, Type = "painting", Name = "Upstairs, Downstairs" });
art.Add(new Art() { Price = 3, Type = "icon", Name = "Dopey Smiley" });
art.Add(new Art() { Price = 1000, Type = "painting", Name = "Young Love" });
art.Add(new Art() { Price = 260, Type = "sculpture", Name = "Taking a Spill" });
}
입니다, 세 가지 속성이 있습니다. ArtType, ArtName 및 MostExpensivePrice가 있습니다. 각 유형에 대해 해당 유형의 최고가 품목에 대한 이름과 가격을 원합니다.
그래서 내 목록이 보일 것 같은 :
painting______Robert_in_the_Morning______2030
sculpture_____Old Dog__________________12000
icon_________Perplexed Smiley______________12
LINQ가에 대한 어떤 모습까요? 시작 예는 다음과 같습니다.
var categories4 =
from a in art
group a by a.Type into g
let maxPrice = g.Max(p => p.Price)
select new { ArtType = g.Key, MostExpensive = g.Where(a => a.Price == maxPrice) };
그것은 좋은 통찰력입니다. 가독성과 성능 사이에 약간의 상충 관계가 있습니다. 그러나 그것은 내부적으로 'Aggregate'를 사용하는 확장 메서드를 만드는 것을 막지는 않지만 Max가 제공 할 수있는 가독성을 제공합니다. (예 : [MaxBy] (https://code.google.com/p/morelinq/source/browse/MoreLinq/MaxBy.cs) 확장 방법) – AtinSkrita
여기에는 많은 좋은 답변이 있었으며, 하나만 선택해야합니다. 이 사람은 제가 창조하려고했던 정신에 가장 잘 대답했습니다. 선택한 Art 개체 집합의 정보가 포함 된 On-The-Fly 개체 모음입니다. –