0

这是我得到的错误“<strong>foreach 语句不能对 object 类型的变量进行操作,因为 object 可以”</p>

在 DAL 中,我有一个如下所示的函数,该函数返回一个对象类型的项目。

public static object GetProfileByUserId(Guid userId)

    {
        using (CCSDBEntities objDbContext = new CCSDBEntities())
        {
            var tb = (from p in objDbContext.Membershipstb
                      join addr in objDbContext.AddressTBs on p.UserId equals addr.UserId
                      where p.UserId == userId && addr.AddressType == "Billing"
                      select new
                      {
                          p.UserId,
                          p.Email,
                          addr.ADDID,
                          addr.AddressType,
                          addr.Mobile,
                          addr.CompanyName,
                          addr.AddressLine1,
                          addr.AddressLine2,
                          addr.City,
                          addr.State,
                          addr.Country,
                          addr.PostalCode
                      }).ToList();
            return tb;
        }
    }

当我尝试使用对象循环时,它显示错误,例如“foreach 语句不能对对象类型的变量进行操作,因为对象可以”。我不想创建任何其他属性。我只想在我的 UI 上使用对象类型的项目并将它们显示在文本框中。

private void BindProfile(Guid userid)

    {
        var tb = ccsdal.GetProfileByUserId(userid);        
        if (tb != null)
        {
            foreach (var x in tb)
            {
                //    Email.Text = x.Email.Trim();
                //    phone.Text = x.Mobile;
            }

        }
    }

有什么建议么?我怎样才能做到这一点?

4

1 回答 1

0

您试图在可见性范围之外使用匿名类型进行操作。要解决此问题,您需要创建某种模型类,例如BillingAddress具有所有需要的属性。

更改GetProfileByUserId(Guid userId)to的定义

公共静态列表<BillingAddress> GetProfileByUserId(Guid userId)

并返回此类型的初始化列表,而不是匿名类型。在您的 foreach 上使用结果列表并执行所有需要的操作。

于 2013-05-29T07:44:07.793 回答