如何从对象列表的属性中提取不同的对象?

问题描述 投票:2回答:1

我创建了以下viewmodel,用于从我的数据库中获取单个列表中3个表的所有结果:

public class ResultsVM
{
    public Room room { get; set; }
    public Hotel hotel { get; set; }
    public List<Picture> pictures { get; set; }
}

然后我将我的视图传递给ResultsVM列表

@model List <ResultsVM>

现在我试图从这个列表中提取一个带有不同对象Hotel的新列表。

有没有办法用Linq实现它,还是我应该循环并逐个比较它们?

c# linq
1个回答
2
投票

假设Hotel对象具有唯一ID,您可以使用此LINQ查询获得不同的酒店:

List<ResultsVM> results = ...
var hotels = results
    .Select(r => r.Hotel)
    .GroupBy(h => h.HotelId)
    .Select(g => g.First())
    .ToList();
© www.soinside.com 2019 - 2024. All rights reserved.