我正在使用此处提供的System.Linq.Data库 - http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
我有以下查询,它运行良好并返回一个Iqueryable
IQueryable customer =
ctx.Customers.Where(cust => true).Select("new("Name,Address")");
但是,如何访问这些返回的列?我无法使用lambda表达式访问它们,如下所示:
var test = customer.Where(cust => cust.Name ==“Mike”)。First();
“cust.Name”在上述情况下无法解决。它不存在于“cust”的方法/属性列表中。
我在这里假设有问题。我知道我正在使用匿名类型。在这种情况下我是否必须创建DTO?
答案 0 :(得分:0)
对于任何IQueryable,您都拥有名为ElementType的属性。 您可以使用它来获取属性,如下所述
IQueryable query = from t in db.Cities
selec new
{
Id = t.Id,
CityName = t.Name
};
if(query!=null)
{
Type elementType = query.ElementType;
foreach(PropertyInfo pi in elementType.GetProperties())
{
}
}
答案 1 :(得分:0)
尝试使用foreach循环:
var a = _context.SENDERS.Select(x=>new { Address=x.ADDRESS, Company=x.COMPANY });
foreach(var obj in a)
{
Console.WriteLine(obj.Address);
Console.WriteLine(obj.Company);
}