당신이 선언하고있는 익명 형식을 통해 키의 일부로 : 또는
var items = context.Items.GroupBy(g => new {g.Name, g.Model, g.SerialNumber })
.Where(/*...*/)
.Select(i => new ItemModel {
Name=g.Key.Name,
SerialNumber = g.FirstOrDefault().SerialNumber //<-- here
});
또는, 개체 키 만들기 : 때때로
var items = context.Items.Where(...).GroupBy(g => g)
.Select(i => new ItemModel {...});
쿼리 구문을 이해하는 것이 더 쉬울 수 있습니다 (여기서는 Item
개체를 키의 일부로 투영했습니다).
var items = from i in context.Items
group i by new { Serial = g.Serialnumber, Item = g } into gi
where /* gi.Key.Item.GetType() == typeof(context.Items[0]) */
select new ItemModel {
Name = gi.Key.Name,
SerialNumber = gi.Key.Serial
/*...*/
};
편집 :
var items = context.Items.Where(/*...*/).Select(i => new ItemModel { /*...*/})
.GroupBy(g => new { g.Name, g.Model });
당신이 키와
group by
사용자의 임의에이에서
IGrouping<AnonymousType``1, IEnumerable<ItemModel>>
을 얻고, 그룹화 된 컬렉션으로 당신의 ItemModels : 당신과 같이 투사 한 후 그룹화 시도 할 수 있습니다.
그룹화하면 개체 목록이 반환됩니다. 나는 그곳의 문제가 무엇인지를 정말로 이해하지 못한다. 대개 groupby를 사용하면 첫 번째 항목 (또는 'LastOrDefault'와 함께 마지막 항목)뿐만 아니라 목록을 사용하려고합니다. 무엇을해야합니까 (또는 알 필요가 있습니까)? –
@GabrielGM, 특정 관련 속성별로 항목을 그룹화하고 싶지만 개체를 선택할 때 'Key'에있는 속성뿐만 아니라 해당 항목의 모든 속성에 액세스하려고합니다. 일련 번호별로 그룹화하지 않았으므로 'g.Key.SerialNumber'를 수행 할 수 없습니다. –