2012-07-30 14 views
1

我想筛选不同的记录基础。我用下面的代码绑定不同的数据到中继器使用linq来反对不同

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> 
+1

请大家看看答案这个问题:http://stackoverflow.com/questions/ 5011617/ASP净中继器绑定-liststring。 – 2012-07-30 08:44:31

+0

@Serge +1其作品。还有一件事是否null在特定情况下被视为唯一 – rahularyansharma 2012-07-30 08:48:50

+0

是否要跳过null? – 2012-07-30 08:55:56

回答

1

好的,我在这里提出了我的答案。

1部分: ASP.NET Repeater bind List<string>

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

var uniqueArea =searchresult.Select(m => m.HotelArea).Where(m => !string.IsNullOrEmpty(m)).Distinct(); 
1

您已经选择了HotelArea这里:

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

...所以在你绑定你应该只选择本身的价值。

如果您需要的数据源中的全部信息,而不是仅仅酒店区,你需要从MoreLINQDistinctBy

+0

是的,和var uniqueArea显示我的字符串列表,当我调试不同的HotelArea,但它失败时,我将它绑定到中继器数据源 – rahularyansharma 2012-07-30 08:37:04

+0

@rahularyansharma:是的,因为我敢肯定在你没有显示的代码中使用,你正在指定一个绑定,它试图在每个值中查找名为HotelArea *的属性。 – 2012-07-30 08:40:30

+0

我编辑了我的代码以显示使用uniqueArea,请查看编辑过的部分 – rahularyansharma 2012-07-30 08:41:54

相关问题