我在LINQ中有以下查询。 “符号”不存在,并且查询为空,但是我收到了一个错误,即转换和程序崩溃。
decimal x = from cie in m_entities.Cie
where cie.symbol.Equals(Symbol)
select cie.cie_id;
或者我可以在x中使用null吗?
答案 0 :(得分:5)
我认为x不会为空 - 你只会得到一个空的IQueryable<T>
(或者它是IEnumrable<T>
?),其中T是cie_id
的数据类型
投射错误是因为您试图将集合强制转换为decimal
。
答案 1 :(得分:1)
假设cie_id是小数,那么试试这个:
decimal x = (from cie in m_entities.Cie
where cie.symbol.Equals(Symbol)
select cie.cie_id).FirstOrDefault()
您当前的代码尝试分配IEnumerable&lt; decimal&gt;到十进制,这将无法正常工作。 FirstOrDefault将选择第一个匹配(如果有),否则为0。
如果您知道将有1或0场比赛,您可以考虑使用SingleOrDefault而不是FirstOrDefault。