2013-05-29 46 views
0

這是我得到遍歷實體框架中的var對象

在DAL「因爲對象不foreach語句不能在Object類型的變量操作」我有一個功能類似於下面的錯誤,這個功能返回一個對象類型的項目。

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語句,因爲對象確實不能在Object類型的變量操作」的錯誤。我不想創建任何其他屬性。我只想在我的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

您試圖在超出可見範圍的情況下使用匿名類型進行操作。要解決這個問題,你需要創建一些模型類,例如BillingAddress具有所有必需的屬性。

GetProfileByUserId(Guid userId)

公共靜態列表< BillingAddress> GetProfileByUserId(GUID用戶id)

和改變定義返回此類型不是匿名類型的初始化列表。 在您的foreach上消耗結果列表並執行所有需要的操作。