具有从表中选择的动态列的Linq查询

时间:2019-02-26 16:21:01

标签: linq

我有两个桌子。第一个包含(以及其他)20个列,名称分别为“ CustomCode1”至“ CustomCode20”。它们包含可以与相关自定义代码关联的数据值。另一个表包含20行。每行(ID为1到20)与第一个表中的相关列相关联。第二个表中有一列“已启用”。

我需要的是仅从第一张表中选择启用的列。

例如假设第二个表中启用了ID 10、15和20,我只想在CustomCode10,CustomCode15和CustomCode20列中选择值。

我知道这不是用于表格的最佳设计,但是我必须使用已有的知识。这将永远只有这20个代码。

我们将不胜感激任何帮助。

提前谢谢

编辑:

我在SQL中具有此功能,它将仅返回已启用字段的值:

选择     (((从id = 1的自定义代码中选择启用)= 1)然后CustomCode1以CustomCode1结尾的情况,     (((从id = 2的自定义代码中选择启用)= 1)然后CustomCode2以CustomCode2结尾的情况,     (((从id = 3的自定义代码中选择启用)= 1)的情况下,则CustomCode3以CustomCode3结尾,
    (((从id = 4的自定义代码中选择启用)= 1)的情况下,则CustomCode4以CustomCode4结尾,
    当(((从id = 5的自定义代码中选择启用)= 1)时CustomCode5以CustomCode5结尾的情况,     当(((从id = 6的自定义代码中选择启用)= 1)时,则CustomCode6以CustomCode6结尾,
    (((从id = 7的自定义代码中选择启用)= 1)的情况下,则CustomCode7以CustomCode7结尾,     当(((从id = 8的customcode中选择启用)= 1)时CustomCode8以CustomCode8结尾的情况,     (((从id = 9的自定义代码中选择启用)= 1)的情况下,则CustomCode9以CustomCode9结尾,
    (((从id = 10的自定义代码中选择启用)= 1)时CustomCode10以CustomCode10结尾的情况,     (((从id = 11的自定义代码中选择启用)= 1)时,则CustomCode11以CustomCode11结尾,
    (((从id = 12的自定义代码中选择启用)= 1)的情况下,则CustomCode12以CustomCode12结尾,
    当(((从id = 13的customcode中选择启用)= 1)时,CustomCode13以CustomCode13结尾的情况,
    当(((从id = 14的自定义代码中选择启用)= 1)时,则CustomCode14以CustomCode14结尾,
    情况(((从id = 15的自定义代码中选择启用)= 1)时,则CustomCode15以CustomCode15结尾,
    (((从id = 16的自定义代码中选择启用)= 1)的情况下,则CustomCode16以CustomCode16结尾,
    (((从id = 17的自定义代码中选择启用)= 1)然后CustomCode17以CustomCode17结尾的情况,     (((从id = 18的自定义代码中选择启用)= 1)然后CustomCode18以CustomCode18结尾的情况,     的情况下(((从id = 19的customcodes中选择启用)= 1)则CustomCode19以CustomCode19结尾,     当(((从id = 20的customcodes中选择启用)= 1)的情况下CustomCode20以CustomCode20结尾 来自客户 其中customeraccountnumber ='XXX'

但是需要一个Linq等效项。我可以删除其他地方返回的空值。

1 个答案:

答案 0 :(得分:0)

您可以像这样加入:

        using (yourDbContext dc = new yourDbContext())
        {
            var result = (from ro in dc.YourFirstTable
                          join pr in dc.YourSecondTable
                          on ro.RelatedID equals pr.RelatedID 
                          where ro.Enabled == true && 
                          pr.AnyColumnYouWant == "SomeValue"
                          select  new
                          {
                 FirstProperty = ro.User_FullName, //you give a name to your property, 
                 SecondProperty = pr.Proj_Date
                 ...
                 ...

                          }).ToList();
        }