【发布时间】:2016-11-22 17:03:52
【问题描述】:
我有以下场景:
- 可以有两个随机表,每个表超过 100 列。
- 其中一个表具有另一个表的外键。
- 用户从两个表中选择一组列,我们应该从 db 中选择并作为 JSON 对象发回。限制是它应该是纯 LINQ(而不是 DynamicLINQ)。
我试图通过我能找到的答案来玩弄表达式,但我取得的最好结果是 IEnumerable 作为结果,这是不可接受的,因为我需要 IQueriable 稍后对其进行过滤。我来回搜索,但我发现的唯一工作变体是 DynamicSQL here,但我不允许使用它。
非常感谢任何想法。
更新:例如,我有两个由 fk 连接的随机表,所以它只是一个常规连接,例如 from t1 in Table1 join t2 in Table2 on t1.field1 = t2.field2。我只需要能够将选择表达式传递给这个连接,它是基于包含我想要选择的列的字符串集合构建的,例如,如果我有{"t1.field1", "t1.field2", "t2.field3"},那么连接应该看起来像from t1 in Table1 join t2 in Table2 on t1.field1 = t2.field2 select new {t1.field1, t1.field2, t2.field3}。
【问题讨论】:
-
将您的联接写入 db 作为视图。并将此视图映射到您的实体。
-
@user1681317,正如我所说,会有随机表和随机列集,所以我需要在选择中使用匿名类型的动态连接。我很肯定这可以在表达式的帮助下实现,但是我在这个主题上的知识并不完美,我无法实现这个
-
能否详细说明您的查询。如果您能提供您的实际查询并告诉我们您想要动态化哪些部分(这是一个词吗?),将会有很大帮助。
-
@Sefe,当然,但查询很简单:table1.Join(table2,
, , )。最重要的部分是dynamicSelectQuery,它必须返回一个匿名对象 -
您能否提供一个没有占位符的具体示例并将其添加到您的问题中。最好也显示您已经尝试过的表达方式。
标签: c# entity-framework linq