2010-05-11 25 views

回答

1

使用Select擴展方法,以便直接創建匿名類型對象,而不是將它們分配給通用對象類的對象。然後您可以根據需要引用該對象的屬性。

IList<User> us = new UserRepository().Getuser(Name.ToUpper(), 
                UserName.ToUpper(), 
                UserCertNumber.ToUpper(), 
                Date.ToUpper(), 
                UserType.ToUpper(), 
                Company.ToUpper(), 
                PageNumber, 
                Orderby, 
                SearchALL.ToUpper(), 
                PrintAllPages.ToUpper()); 

    var users = us.Select(u => new 
     { 
      Id = u[i].UserId, 
      Title = u[i].Title, 
      FirstName = u[i].FirstName, 
      LastName = u[i].LastName, 
      Privileges = (from apps in u[i].UserPrivileges select new { PrivilegeId = apps.Privilege.PrivilegeId, PrivilegeName = apps.Privilege.Name, DeactiveDate = apps.DeactiveDate }), 
      Status = (from status in u[i].UserStatus select new { StatusId = status.Status.StatusId, StatusName = status.Status.StatusName, DeactiveDate = status.DeactiveDate }), 
      ActiveDate = u[i].ActiveDate, 
      UserName = u[i].Email, 
      UserCN = (from cert in u[i].UserCertificates select new { CertificateNumber = cert.CertificateNumber, DeactiveDate = cert.DeactiveDate }), 
      Company = u[i].Company.Name 

     }); 


    string x = ""; 
    string y = ""; 

    var report = users; 

    foreach (var r in report) 
    { 
     var company = r.Company; // example 
     ... 
    } 

編輯:BTW,是有一些原因,你是將所有這些參數爲大寫,而不是簡單地做不變的情況下,在比較你的倉庫?

+0

我的朋友你是AWESOME.AWESOME..and真棒。第一杆就像冠軍一樣。謝謝TON :) :) – bluwater2001 2010-05-11 21:18:57

0

你這樣做的方式是創建一個匿名類型。

創建一個包含這些屬性的類。另一種方法是將報表讀取到循環中。

+0

由tvanfosson解決方案爲我工作。謝謝您的回答。由tvanfosson爲我工作的 – bluwater2001 2010-05-11 21:20:20

0
object o = new { Name = "string" }; 
Console.WriteLine(o.GetType().GetProperty("Name").GetValue(o, null)); 

但這並不是真正推薦的做法。我將爲此創建標準數據傳輸類。

+0

解決方案。謝謝您的回答。 – bluwater2001 2010-05-11 21:20:41

0

只是增加tvanfosson解決方案:

如果我們想獲得我們做PrivilegeName:

  foreach (var r in report) 
      { 
       x = r.FirstName; // example 

       foreach (var s in r.Privileges) 
       { 
        y = s.PrivilegeName; //Example 
       } 

      }