1

我正在尝试根据 distinct 过滤记录。我使用了以下代码

List<BALHotelList> searchresult = (from a in bh
                                           join b in hr on a.HotelCode equals b.hotelCode
                                           orderby a.HotelName
                                           select new BALHotelList
                                               {
                                                   HotelCode = a.HotelCode,
                                                   ImageURL_Text = a.ImageURL_Text,
                                                   HotelName = a.HotelName,
                                                   StarRating = a.StarRating,
                                                   HotelAddress = a.HotelAddress,
                                                   Destination = a.Destination,
                                                   Country = a.Country,
                                                   HotelInfo = a.HotelInfo,
                                                   Latitude = a.Latitude,
                                                   Longitude = a.Longitude,
                                                   HotelArea=a.HotelArea,
                                                   totalPrice = b.totalPrice,
                                                   totalPriceSpecified = b.totalPriceSpecified,
                                                   totalSalePrice = b.totalSalePrice,
                                                   totalSalePriceSpecified = b.totalSalePriceSpecified,
                                                   rooms = b.rooms,
                                                   boardType = b.boardType

                                               }).ToList();

        var uniqueArea =searchresult.Select(m => m.HotelArea).Distinct();


  rptHotelArea.DataSource = uniqueArea;
        rptHotelArea.DataBind();

但它没有在数据源中找到 HotelArea 。

但是当我调试它时,它会显示我所有不同的值uniqueArea

错误如下:

DataBinding: 'System.String' does not contain a property with the name 'HotelArea'.

已编辑

这是中继器 HTML

  <asp:Repeater ID="rptHotelArea" runat="server">
        <ItemTemplate>
            <div class="sub-part1">
                <a href="#"><%#Eval("HotelArea")%></a></div>
        </ItemTemplate>
    </asp:Repeater>
4

2 回答 2

1

您已HotelArea在此处选择:

var uniqueArea = searchresult.Select(m => m.HotelArea).Distinct();

...所以在您的数据绑定中,您应该只选择值本身。

如果您需要数据源中的全部信息,而不仅仅是酒店区域,则需要类似DistinctBy来自MoreLINQ的信息。

于 2012-07-30T08:33:50.097 回答
1

好的,我已将答案移至此处。

第 1 部分: ASP.NET 中继器绑定 List<string>

第 2 部分:跳过 null 和空字符串:

var uniqueArea =searchresult.Select(m => m.HotelArea).Where(m => !string.IsNullOrEmpty(m)).Distinct();
于 2012-07-30T09:42:24.963 回答