关于 System.Linq.Dynamic 的问题

发布于 2024-12-04 02:59:22 字数 364 浏览 1 评论 0原文

我有一个关于使用 System.Linq.Dynamic 程序集中的某些功能的问题。

例如,我需要使用像“@”NOT(Person.Name =“”test“”)”这样的查询,现在的问题是我没有特定的对象类型,而是需要读取属性名称及其值(并且可能是类型,尽管我实际上必须从值中推断出类型)...我通过使用反射解决了这个问题(在运行时根据需要创建了类型和属性)...但我仍然想知道这是否可以在不创建的情况下实现类型和属性,但使用匿名类型(我基本上需要不必输入这些类型,只需输入值...当然我可以编写代码来找出为 ex 输入的值的类型,它有引号 - 这意味着它是一个字符串...),或者如果有另一个.Net 中的库用于完成此任务(我没有太多时间研究 Dynamic 类......它是如何工作的等) 。

I have a question regarding using some features from the System.Linq.Dynamic assembly.

I needed using queries like "@"NOT (Person.Name = ""test"")" for example, now the problem is that I do not have a certain object type, but instead need reading the property names and their values (and may be types, though I actually must deduce the types from the values) ... I solved this by using reflection (created the type and the properties as needed at runtime) .... but I still wonder whether that is possible without creating the types and properties, but using anonymuous types (I basically need to not have to enter those types, just the values ... of course I can write code to find out the type of the value entered for ex it has quotes - that means it's a string ...), or if there is a another library in .Net for accomplishing this task (I did not have very much time for looking into the Dynamic class ... how it's working etc)
.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

木有鱼丸 2024-12-11 02:59:22

Dynamic Linq 解析器始终需要实际类型进行解析,因为它将动态表达式解析为基于类型的 System.Linq.Expression 表达式树。但是,Dynamic Linq 库包含一种在运行时快速创建此类匿名类型的方法。下面是一个使用它的示例(取自与 DynamicLinq.cs 文件一起打包的 html 文档文件):

DynamicProperty[] props = new DynamicProperty[] {
    new DynamicProperty("Name", typeof(string)),
    new DynamicProperty("Birthday", typeof(DateTime)) };
Type type = DynamicExpression.CreateClass(props);
object obj = Activator.CreateInstance(type);
t.GetProperty("Name").SetValue(obj, "Albert", null);
t.GetProperty("Birthday").SetValue(obj, new DateTime(1879, 3, 14), null);
Console.WriteLine(obj);

The Dynamic Linq parser always requires an actual type to parse against because it is parsing the dynamic expression into System.Linq.Expression expression trees, which are based on types. However, the Dynamic Linq library contains a method for quickly creating anonymous types like this at run time. Here is an example of using that (taken from the html documentation file that comes packaged with the DynamicLinq.cs file):

DynamicProperty[] props = new DynamicProperty[] {
    new DynamicProperty("Name", typeof(string)),
    new DynamicProperty("Birthday", typeof(DateTime)) };
Type type = DynamicExpression.CreateClass(props);
object obj = Activator.CreateInstance(type);
t.GetProperty("Name").SetValue(obj, "Albert", null);
t.GetProperty("Birthday").SetValue(obj, new DateTime(1879, 3, 14), null);
Console.WriteLine(obj);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文