使用动态表达式 API 选择匿名类型
我将动态表达式 API (System.Linq.Dynamic
) 与 LINQ to Entities 结合使用。我的 LINQ 查询如下。
var query = this.db.Products.AsQueryable()
.Where(strCondition)
.OrderBy("ProductNumber")
.Select("new(ProductNumber, ProductDescription, ProductCategory.Name)");
现在我有了“查询”,我不知道如何获取每个字段的值。
string strTemp;
foreach (var item in query)
{
strTemp = item.?
}
它是匿名类型,所以我不能真正使用强类型来获取值。我能做些什么?我选择获取匿名类型字段的原因是因为我需要将 ProductCategory.Name 字段获取到结果中。有没有更好的方法使用动态表达式 API 在结果中获取 ProductCategory.Name?有人可以帮忙吗?
I'm using Dynamic Expression API (System.Linq.Dynamic
) with LINQ to Entities. My LINQ query is below.
var query = this.db.Products.AsQueryable()
.Where(strCondition)
.OrderBy("ProductNumber")
.Select("new(ProductNumber, ProductDescription, ProductCategory.Name)");
Now that I have the "query", I don't know how to get the value of each of the field.
string strTemp;
foreach (var item in query)
{
strTemp = item.?
}
It's anonymous type so I can't really use strongly type to get the value. What can I do? The reason I select to get anonymous type fields is because I need to get ProductCategory.Name field into the result. Is there a better way to get ProductCategory.Name in the result with Dynamic Expression API? Can anyone help?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
处理它的最简单方法是将循环变量声明为动态变量,因为您没有任何静态类型信息(推断的静态类型是对象,但它是DynamicClass 的实例)。
否则,您可以手动使用反射。
The easiest way to deal with it is to declare your loop variable to be
dynamic
since you don't have any static type information (the inferred static type isobject
but it is an instance of aDynamicClass
).Otherwise you can use reflection manually.
只需使用您用来创建匿名对象的属性名称即可。
VS intellisense 应该能识别它们。
您也可以指定自己的属性名称:
Just use the property name you've used to create your anonymous object.
VS intellisense should pick them up.
You can specify your own property names as well: