Используйте метод расширения Select, чтобы непосредственно создавать анонимные типизированные объекты, а не назначать их объекту универсального класса Object. После этого вы сможете ссылаться на свойства объекта по своему усмотрению.
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
...
}
РЕДАКТИРОВАТЬ : Кстати, есть ли какая-то причина, по которой вы преобразуете все эти параметры в верхний регистр, а не просто выполняете инвариантные сравнения регистра в своем хранилище?