是否可以使用动态LINQ的动态对象列表?
如果我创建一个具有动态属性的动态对象,然后想在这些对象列表上使用Dynamic LINQ?
例如,我有(数据是动态对象列表):
IEnumerable<dynamic> result = data.Where(x => x.branch_group != "");
有效。
和
IEnumerable<dynamic> result = data.Where("branch_group != \"\"");
哪个不起作用。
如果我尝试使用Select获取值,我会在“对象”类型中找到“No property or field'xxx”。
这应该可行,对吗?
以前有人做过这些事吗?
提前致谢!
更新<!/强>
耶!
我终于在24小时后(是的,这是真的)找到了解决这个问题的方法,不断进行严格的调查和严重的幻觉!
我实际上可以听到这些代码行在我头脑中嘎嘎作响,我目睹了文明的宇宙灭绝,试图解决这个问题。我看到时空本身在围绕这个无法解决的领域的永恒死亡之前颤抖。
BUT!然后我睡了4个小时,早上得到了解决方案。
解决此问题的关键是创建一个使用索引器的对象,使动态LINQ库在运行时使用“it”-keyword。
所以,它实际上是可能的,虽然每篇文章,博客,论坛,[在这里插入源代码]等我都读到了它的建议但不是。
我甚至可能会得到一些信用(或者像无穷无尽的美元或其他东西)。 (是的,是的,我对这一切都过于兴奋,等等,等等,等等。但这真是真的!):P
如需代码示例,请发邮件至:johan@codelink.se
答案 0 :(得分:1)
使用opensource Impromtu-Interface(在nuget中找到)
IEnumerable<dynamic> result = data.Where(Impromptu.InvokeGet(x,"branch_group") != "")
这很丑陋,但它允许"branch_group"
来自一个变量,我认为这是你正在寻找的有效声明的好处。