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