将LINQ查询结果绑定到中继器

本文关键字:中继器 绑定 结果 LINQ 查询 | 更新日期: 2023-09-27 18:07:24

我有一个这样的查询

 var businessList = (from u in _DB.Users
join cat in _DB.BusinessCategories on u.UserId equals cat.UserId
select new BusinessDetails(u.Businesses.FirstOrDefault(), u)).Skip(0).Take(10);
dlBusiness.DataSource = businessList.ToList();
dlBusiness.DataBind();

我将Businessname作为Business类的成员。我有一个如下的数据列表

 <asp:DataList ID="dlBusiness" DataKeyField="UserId" runat="server" >
    <ItemTemplate>
            <%#Eval("Business.BusinessName")%>
    </ItemTemplate>
 </asp:DataList>

下面是类定义

public class BusinessDetails
    {
        public BusinessDetails(Business business,User user){
            this._Business = business;
            this._UserDetails = user;
        }
        private string _distance;
        public string Distance
        {
            get { return _distance; }
            set { _distance = value; }
        }
        private Business _Business;
        public Business BusinessData
        {
            get { return _Business; }
            set { _Business = value; }
        }
        private User _UserDetails;
        public User UserDetails
        {
            get { return _UserDetails; }
            set { _UserDetails = value; }
        }

    }

但是这个显示空白?如何将它绑定到数据列表?

将LINQ查询结果绑定到中继器

我想把它改成

DataBinder.Eval(Container.DataItem, "BusinessData.BusinessName")

假定业务类具有BusinessName属性?

我想你想要

<%#Eval("BusinessData.BusinessName")%>

代替

<%#Eval("Business.BusinessName")%>

ItemTemplate标签。

我不认为你有一个UserId字段在BusinessDetails类。您应该将其替换为唯一键列名称或删除它。我看到你可以访问BussinessName,所以访问说明符是公共的。

绑定是正确的。如果数据列表控件dlBusiness找不到该属性,则抛出异常。问题的原因可能是businessList返回一个空的BussinessName。