2
我有以下三张表,需要从两个不相似的表中引入信息。使用C#Linq的错误SQL CONCAT
- 表
baTable
有字段OrderNumber
和Position
。 - 表
accessTable
具有字段OrderNumber
和ProcessSequence
(等等) - 表
historyTable
具有字段OrderNumber
和Time
(等等)。
。
var progress = from ba in baTable
from ac in accessTable
where ac.OrderNumber == ba.OrderNumber
select new {
Position = ba.Position.ToString(),
Time = "",
Seq = ac.ProcessSequence.ToString()
};
progress = progress.Concat(from ba in baTable
from hs in historyTable
where hs.OrderNumber == ba.OrderNumber
select new {
Position = ba.Position.ToString(),
Time = String.Format("{0:hh:mm:ss}", hs.Time),
Seq = ""
});
int searchRecs = progress.Count();
查询编译成功,但是当SQL调用期间执行以Count()
,我得到一个错误
所有查询使用UNION合并,交叉或EXCEPT运算符必须有同等数量的的表达式在他们的目标列表中。
显然每两个列表有三个项目,其中之一是一个常数。其他帮助委员会建议Visual Studio 2010 C#编译器正在优化常量,并且我已经尝试了常量的替代方法。
最令人惊讶的是,如果select new {...}
内Time=
条目都子查询已被注释掉,在SQL执行时发生错误。
尝试更改'Time = String.Format(“{0:hh:mm:ss}”,hs.Time)'到'Time =“foo”' –