使用动态 linq ( http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx ) 我运行查询下面返回一个 IQueryable。在这个也是 IEnumerable 的结果上,我可以运行 Count() 但是没有 ToList() 来获取值。我可以使用 foreach 枚举它们,但无法在没有反射的情况下访问生成的匿名类型中的各个字段。这是唯一的方法吗?谢谢
var query =
db.Customers.Where("City == @0 and Orders.Count >= @1", "London", 10).
OrderBy("CompanyName").
Select("New(CompanyName as Name, Phone)");
foreach (var item in query)
{
foreach (var prop in item.GetType().GetProperties())
{
Console.WriteLine(prop);
}
}
尝试强制转换但出现错误无法将“DynamicClass1”类型的对象强制转换为“Test”类型。
foreach (var item in query)
{
Console.WriteLine("{0}: {1}", ((Test)item).CompanyName, ((Test)item).Phone);
}
public class Test {
public string CompanyName { get; set; }
public string Phone { get; set; }
}