2012-07-30 11 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

相關問題