这是我得到的错误“ 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;
}
}
}
有什么建议吗?我怎样才能做到这一点?
答案 0 :(得分:0)
您尝试在可见范围之外使用匿名类型进行操作。要解决此问题,您需要创建某种模型类,例如BillingAddress
具有所有需要的属性。
将GetProfileByUserId(Guid userId)
的定义更改为
public static List< BillingAddress> GetProfileByUserId(Guid userId)
并返回此类型的初始化列表而不是匿名类型。 在你的foreach上使用结果列表并执行所有需要的操作。