在实体框架中循环访问var in object

时间:2013-05-29 05:41:25

标签: entity

这是我得到的错误“ foreach语句无法对类型对象的变量进行操作,因为对象确实

在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;
            }

        }
    }

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

1 个答案:

答案 0 :(得分:0)

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

GetProfileByUserId(Guid userId)的定义更改为

  

public static List< BillingAddress> GetProfileByUserId(Guid userId)

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