我有两张桌子:
我想查询第一个表中所有记录,其中数字存在于PersonalNumbers表或列表中。
贝娄是我的代码:
var GetMyPersonalNumbers = db.MyPersonalNumContext.Where(i => i.EmployeeId == My_Emp_Id).Select(n => n.PersonalNumber).ToList();
var GetAllPersonalCalls = from c in db.MyAllPhoneBillContext
where GetMyPersonalNumbers.Contains(c.CALLED_NUMBER)
select c;
我收到了以下错误:
参数1:无法从'double?'转换'加倍'
任何人都可以告诉我如何修复此错误
答案 0 :(得分:1)
第一个参数可以为double
,并且无法自动转换为double
。
您必须在可空类型的序列中对空值执行某些操作,例如:
IEnumerable<double> result =
sequence.Where(x => x.HasValue).Select(x => x.Value);
答案 1 :(得分:0)
这是因为在您的数据库中,您有一个double类型的列,但该数据类型可以为null。您无法将可空双精度值与非可空双精度数进行比较。您可以从阅读this msdn page
中受益答案 2 :(得分:0)
代码中的一个变量或数据库中的字段都可以为空(因此是“?”),这会导致您的问题。
答案 3 :(得分:0)
我通过使用Join查询解决了我的问题,下面是我的代码:
var GetAllPersonalCalls = from c in db.MyAllPhoneBillContext
join p in db.MyPersonalNumContext on c.CALLED_NUMBER equals p.PersonalNumber
where c.CALLING_NUMBER == My_Number
where c.CALL_DATE.Year == currentYear
where c.CALL_DATE.Month == currentMonth
select new PhoneBillVM
{
CALLING_NUMBER = c.CALLING_NUMBER,
CALLED_NUMBER = c.CALLED_NUMBER,
CALL_DURATION = c.CALL_DURATION,
CustomTime = c.CALL_TIME.Hour + ":" + c.CALL_TIME.Minute + ":" + c.CALL_TIME.Second,
CALL_COST = c.CALL_COST,
CALL_DATE = c.CALL_DATE
};