Linq到SQL不同的结果集取决于条件

本文关键字:结果 取决于 条件 SQL Linq | 更新日期: 2023-09-27 18:12:01

在我的存储过程proc1:

IF (condition1)
    BEGIN
        SELECT * FROM table1
    END;
ELSE IF (condition2)
    BEGIN
        SELECT * FROM table2
    END;

但在designer.cs中,我只看到proc1Result类只有14个属性,类似于table1中的14列。表2的23列不能作为属性或字段找到。因此,当满足condition2时,

ISingleResult<proc1Result> results = datacontext1.proc1(parameter);
foreach (proc1Result item in results){
    resultList.Add(
        new model2{
            // no property to set here
        }
    );
}

我能做些什么来添加Table2的列到proc1Result类?

Linq到SQL不同的结果集取决于条件

您需要返回一个包含两个表中的列的结果。类似这样的内容(但如果某些列有相同的"名称",则必须列出所有列以避免重复/创建别名):

IF (condition1)
    BEGIN
        SELECT t1.*,t2.* 
        FROM table1 t1, table2 t2
        -- return no results from t2, fieldname can never be null
        WHERE t2.fieldname != t2.fieldname 
    END;
ELSE IF (condition2)
    BEGIN
        SELECT t1.*,t2.* 
        FROM table1 t1, table2 t2
        -- return no results from t1, fieldname can never be null.
        WHERE t1.fieldname != t1.fieldname 
    END;

proc1Result将保存两个模型的属性,因此当第一个条件执行时,第二个条件的属性将被忽略,反之亦然。

Class proc1Result {
    //properties for table1
    //properties for table2
    }
 Class model1{
    //properties for table1
    } 
Class model2 {
    //properties for table2
    }

    ISingleResult<proc1Result> results = datacontext1.proc1(parameter);
    foreach (proc1Result item in results){
        resultList.Add(
            new model2{
                item.propertyname //which is there in both model2 and proc1result
            }
        );
    }