LINQ表达式返回null

时间:2010-01-27 01:15:47

标签: c# linq entity-framework

我在LINQ中有以下查询。 “符号”不存在,并且查询为空,但是我收到了一个错误,即转换和程序崩溃。

decimal x = from cie in m_entities.Cie
            where cie.symbol.Equals(Symbol)
            select cie.cie_id;

或者我可以在x中使用null吗?

2 个答案:

答案 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。