linq中的动态表名例如,而不是:varo=(fromxincontext.usersselectx);我想使用类似的东西:varo=(fromxingetTableObjectByName("users",context)selectx);或多或少。到目前为止,这是我的代码,它编译并运行:varpropval1=propinfo1.GetValue(ipe2,null);有效,但总是返回零记录。用户表肯定包含记录,无论如何,当我使用上面的第一种方法直接调用它时,我会按预期获得所有记录。我如何修改我的代码以实际删除记录,而不仅仅是空集合?编辑:我也试过这个:输入dbsetType=typeof(DbSet);dbsetType=dbsetType.MakeGenericType(Type.GetType("MySiteNamespace.user"));输入t=dbsetType.GetType();varval=prop.GetValue(ipe,null);在这种情况下,代码不仅会运行,而且会按预期返回结果。但是,val是一个对象。我需要将其转换为DbSet类型,这很容易,除了参数user仅在运行时已知....actor也需要是动态的。我试过使用Convert.ChangeType(val,t);但这会引发InvalidCastException(对象必须实现IConvertible)。如何将val变量转换为实际可用的对象?不确定这是否相关,但这与EntityFramework4相关。在您的DbContext类中,添加一个名为Set的方法,该方法返回:publicDbSetSet(stringname){//您可能需要填写上下文返回基的命名空间.Set(Type.GetType(名称));}您可以这样查询:().Where(a=>a.HasSomeValue...//您的查询也应该是基于字符串的。//使用System.Linq.Dynamicnuget包/命名空间varresults=db.Set("Namespace.EntityName").AsQueryable().Where("SomeProperty>@1andSomeThing关于System.Linq.Dynamic的更多信息,请访问这里使用,需要了解更多C#学习教程,希望大家多多关注---本文收集自网络,不代表立场,如涉及侵权,请点右联系管理员删除,如需转载请注明出处:
