我试图在不同的基础上过滤记录基础。我使用了以下代码
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'.
EDITED
这是转发器HTML
<asp:Repeater ID="rptHotelArea" runat="server">
<ItemTemplate>
<div class="sub-part1">
<a href="#"><%#Eval("HotelArea")%></a></div>
</ItemTemplate>
</asp:Repeater>
答案 0 :(得分:1)
您已在此处选择了HotelArea
:
var uniqueArea = searchresult.Select(m => m.HotelArea).Distinct();
...所以在您的数据绑定中,您应该只选择值本身。
如果您需要数据源中的所有信息,而不是只是酒店区域,那么您需要MoreLINQ之类的DistinctBy
。
答案 1 :(得分:1)
好的,我在这里提出了答案。
第1部分: ASP.NET Repeater bind List<string>
第2部分: 跳过null和空字符串:
var uniqueArea =searchresult.Select(m => m.HotelArea).Where(m => !string.IsNullOrEmpty(m)).Distinct();