【问题标题】:Run LINQ query with dynamic table name [duplicate]使用动态表名运行 LINQ 查询 [重复]
【发布时间】:2016-10-10 12:08:24
【问题描述】:

我尝试运行 LINQ 查询。从下面的代码可以看出,我在将表传递给 LINQ 之前尝试命名表(“TableName”),当然 LINQ 找不到名为“TableName”的表。还有其他方法可以做到这一点吗?我试过 ctxdata.(TableName) 但没用。

            var TableName = "";
            TableName = "DATA_ + DistrictCode;

            using (SFTEMPEntities1 ctxdata = new SSFTEMPEntities1())
            {
                var queryAttributes = (from p in ctxdata.TableName //See this line 
                                   where p.Filename == FileName
                                   select new { p.REF , p.JOB_TITLE })
                                   .Take(1);


            }

我还是 C# 的新手,如果您能根据此代码向我展示示例,我将不胜感激。

【问题讨论】:

标签: c# linq


【解决方案1】:

您可以使用Set 方法从数据上下文中获取表,但您需要它的元素类型,例如通用参数Set<T>() 或只是Type 变量Set(Type type)。因此,您需要找到某种方法来按表名获取类型。如果您有类型名称,则可以从程序集 ctxdata.GetType().Assembly.GetType("TypeName") 中按名称获取类型。

使用反射,您可以像这样从数据上下文中获取表属性:

var table = ctxdata.GetType().GetProperty(TableName).GetValue(ctxdata) as IQueryable;

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 1970-01-01
    • 2023-03-13
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    相关资源
    最近更新 更多