c# – 如何从匿名类型列表中迭代?

我有这个
linq到实体查询:

c.CreateQuery<T_Hotels>("T_Hotels").Where(item => item.Id > 0).GroupBy(item => new { item.Location, item.Name }).Select(group => new { group.Key, Total = group.Sum(item => item.Id) })

我想在类Helper的方法中实现所有内容,如何声明GroupBy和Select的表达式,返回类型是什么?

public IQueryable<???> GetHotelsGroupBy(Expression<Func<T_Hotels, bool>> pWhere,
         ??? pGroupBy, ??? pSelect)
{
   return c.CreateQuery<T_Hotels>("T_Hotels").Where(pWhere).GroupBy(pGroupBy).Select(pSelect);

}

抱歉我的英语.
里诺

最佳答案 理想情况下,匿名类型不应暴露在使用它们的类型之外,除非您乐意使用反射与它们交谈.但是,您可以返回非通用的IEnumerable或IList.

有一种叫做“cast by example”的东西可以让anon-types恢复到你的期望,但这非常脆弱.声明一个自定义类型来表示此API上的数据会更好(而且工作量更少).那你就不是每一步都在与系统作斗争.

点赞