【问题标题】:generic cross join on table based on user choice of column基于用户选择列的表上的通用交叉连接
【发布时间】:2013-02-13 08:25:43
【问题描述】:

我需要对数据库中的表列执行交叉连接。我使用 linq 和 C# 来做到这一点。这是我写的代码:

var res = (from item_1 in set1
           join item_2 in set_2 on new
           {
               item_1.columnA,
               item_1.columnB,
               item_1.columnC,
               item_1.columnD,
               item_1.columnE,
               //etc...
           }
           equals new
           {
               item_2.columnA,
               item_2.columnB,
               item_2.columnC,
               item_2.columnD,
               item_2.columnE,
               //etc...
           }
           select new { item_1,item_2};

我有一个 asp.net 页面,用户可以在其中选择他们希望在哪些列上执行交叉连接。查询应该反映他们的选择。一些用户只希望使用其中的 2 个列,而其他用户会选择 10 个。

我显然不想在某些 switch 语句中重复此查询并包含选定的列。如果有一种通用的方法可以做到这一点,我正在徘徊。传递一个 lambda 表达式......我只是不确定应该如何完成。 任何帮助将不胜感激。

【问题讨论】:

  • 顺便说一句,这不称为交叉连接。交叉连接是未经过滤的笛卡尔积。

标签: c# linq generics lambda


【解决方案1】:

看看 Scott Gu 关于Dynamic LinQ 的这篇博文。

它不仅包含对此事的解释,还提供了下载链接和示例。希望这会有所帮助!

【讨论】:

  • 这个库所建议的并不是我想要的。这将需要一些我试图避免的复杂字符串连接。我更多的是寻找包含 lambda 表达式和泛型的东西。
猜你喜欢
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多